Исследование структуры шаблонов Azure Resource Manager
В этом уроке вы узнаете об использовании шаблонов Azure Resource Manager (шаблонов ARM) для реализации инфраструктуры в качестве кода. Вы изучите разделы шаблона ARM, узнайте, как развернуть шаблон ARM в Azure и подробно ознакомиться с разделом ресурсов шаблона ARM.
Что такое "Инфраструктура как код"?
Инфраструктура как код позволяет описывать инфраструктуру, необходимую для приложения, с помощью кода .
Используя концепцию "Инфраструктура как код", вы можете поддерживать и код приложения, и все, что вам нужно для развертывания приложения в центральном репозитории кода. Преимущества концепции "Инфраструктура как код"
- Согласованные конфигурации
- Улучшенная масштабируемость
- Более быстрые развертывания
- Улучшенные возможности трассировки
Это видео объясняет инфраструктуру как код:
Что такое шаблон ARM?
Шаблоны ARM — это файлы в нотации объектов JavaScript (JSON-файлы), которые определяют инфраструктуру и конфигурацию для развертывания. В шаблоне используется декларативный синтаксис. Декларативный синтаксис — это способ создания структуры и элементов, которые определяют, какие ресурсы будут выглядеть без описания потока управления. Декларативный синтаксис отличается от императивного синтаксиса, где используются команды, которые должен выполнять компьютер. При создании императивных скриптов определяется каждый шаг в развертывании ресурсов.
Шаблоны ARM позволяют объявлять, что вы собираетесь развертывать, без необходимости написания последовательности команд для создания развертывания. В шаблоне ARM вы указываете ресурсы и свойства этих ресурсов. Затем Azure Resource Manager использует эти сведения для развертывания ресурсов в упорядоченном и согласованном режиме.
Преимущества использования шаблонов ARM
Шаблоны ARM позволяют автоматизировать развертывание и использовать концепцию инфраструктуры как кода (IaC). Код шаблона становится частью вашей инфраструктуры и проектов разработки. Аналогично коду приложения вы можете хранить файлы IaC в исходном репозитории и управлять их версиями.
Шаблоны ARM являются идемпотентными, то есть вы можете многократно развертывать один и тот же шаблон и получать те же самые типы ресурсов в том же состоянии.
Диспетчер ресурсов управляет развертыванием ресурсов, чтобы они были созданы в правильном порядке. Кроме того, при возможности ресурсы создаются параллельно, поэтому развертывания шаблонов ARM выполняются быстрее, чем сценарии развертывания.
В Resource Manager также имеется встроенная проверка, и перед началом развертывания выполняется проверка шаблона для уверенности в успешности развертывания.
Если развертывания становятся более сложными, можно разбить ваши шаблоны на более мелкие многократно используемые компоненты и связать их вместе во время развертывания. Кроме того, одни шаблоны можно вкладывать в другие.
На портале Azure можно просматривать журнал развертывания и получать информацию о состоянии развертывания. На портале отображаются значения всех параметров и выходных данных.
Вы также можете интегрировать свои шаблоны ARM в инструменты непрерывной интеграции и непрерывного развертывания (CI/CD), такие как Azure Pipelines, которые могут автоматизировать ваши конвейеры выпуска для быстрых и надежных обновлений приложений и инфраструктуры. Используя задачи шаблонов ARM и Azure DevOps, вы можете постоянно создавать и развертывать свои проекты.
Структура файла шаблона ARM
При написании шаблона ARM необходимо понять все части, составляющие шаблон и то, что они делают. Файлы шаблонов ARM состоят из следующих элементов:
Элемент | Description |
---|---|
schema | обязательный раздел, который определяет расположение файла схемы JSON, описывающего структуру данных JSON. Номер используемой вами версии зависит от области развертывания и вашего редактора JSON. |
contentVersion | обязательный раздел, который определяет версию вашего шаблона (например, 1.0.0.0). Вы можете использовать это значение для документирования существенных изменений в вашем шаблоне, чтобы выбирать правильный шаблон для развертывания. |
apiProfile | необязательный раздел, который определяет коллекцию версий API для типов ресурсов. Вы можете использовать это значение, чтобы не указывать версии API для каждого ресурса в шаблоне. |
parameters | необязательный раздел, в котором определяются значения, предоставляемые во время развертывания. Эти значения могут предоставляться с помощью файла параметров, параметров командной строки или на портале Azure. |
variables | необязательный раздел, где определяются значения, которые используются для упрощения выражений языка шаблона. |
functions | необязательный раздел, где можно определить пользовательские функции, доступные в шаблоне. Пользовательские функции могут упростить шаблон, если в нем многократно используются сложные выражения. |
resources | обязательный раздел, где определяются фактические элементы, которые вы хотите развернуть или обновить в группе ресурсов или подписке. |
выходные данные | необязательный раздел, где указываются значения, которые будут возвращаться в конце развертывания. |
Развертывание шаблона ARM в Azure
Шаблон ARM можно развернуть в Azure одним из следующих способов:
- Развертывание локального шаблона
- Развертывание связанного шаблона
- Развертывание в конвейере непрерывного развертывания
В этом модуле рассматривается развертывание локального шаблона ARM. В последующих модулях вы узнаете, как развернуть более сложную инфраструктуру и интегрировать ее с Azure Pipelines.
Для развертывания локального шаблона требуется локально установленный Azure PowerShell или Azure CLI.
Сначала выполните вход в Azure через Azure CLI или Azure PowerShell.
az login
Затем определите группу ресурсов. Можно использовать уже определенную группу ресурсов или создать новую с помощью следующей команды. Доступные значения расположения можно получить с помощью команд: az account list-locations
(CLI) или Get-AzLocation
(PowerShell). Расположение по умолчанию можно настроить с помощью az configure --defaults location=<location>
.
az group create \
--name {name of your resource group} \
--location "{location}"
Чтобы начать развертывание шаблона в группе ресурсов, используйте команду az deployment group create Azure CLI или команду New-AzResourceGroupDeployment Azure PowerShell.
Совет
Разница между az deployment group create
и заключается в том, что az group deployment create
является старой командой, которая будет устарела и будет замененаaz deployment group create
az group deployment create
. Поэтому рекомендуется развертывать az deployment group create
ресурсы в группе ресурсов область.
Для обеих команд требуется группа ресурсов, регион и имя развертывания, чтобы их можно было легко найти в журнале развертывания. Для удобства в упражнении создается переменная, в которой хранится путь к файлу шаблона. Эта переменная упрощает выполнение команд развертывания, так как при каждом развертывании не требуется повторно вводить путь. Приведем пример:
Для выполнения этой команды развертывания у вас должна быть установлена последняя версия Azure CLI.
templateFile="{provide-the-path-to-the-template-file}"
az deployment group create \
--name blanktemplate \
--resource-group myResourceGroup \
--template-file $templateFile
Для развертывания сложных решений используйте связанные шаблоны. Вы можете разбить шаблон на несколько шаблонов и развертывать их через основной шаблон. При развертывании основного шаблона он активирует развертывание связанного шаблона. Вы можете сохранить и защитить связанный шаблон с помощью маркера SAS.
Конвейер CI/CD автоматизирует создание и развертывание проектов разработки, включая проекты шаблонов ARM. Чаще всего для развертывания шаблонов используются два конвейера — Azure Pipelines и GitHub Actions.
Дополнительные сведения об этих двух типах развертывания представлены в других модулях.
Добавление ресурсов в шаблон
Чтобы добавить ресурс в шаблон, вам нужно знать поставщик ресурса и его типы ресурсов. Синтаксис этой комбинации имеет вид {поставщик-ресурса}/{тип-ресурса}. Например, для добавления в шаблон учетной записи хранения вам потребуется поставщик ресурсов Microsoft.Storage. Одним из типов для этого поставщика является storageAccount. Таким образом, ваш тип ресурса будет отображаться следующим образом: Microsoft.Storage/storageAccounts. Для поиска нужных поставщиков вы можете использовать список поставщиков ресурсов для служб Azure.
Определив поставщика и тип ресурса, разберитесь в свойствах всех типов ресурсов, которые вы хотите использовать. Дополнительные сведения см. в статье Определение ресурсов в шаблонах Azure Resource Manager Найдите ресурс в списке в расположенном слева столбце. Обратите внимание, что свойства отсортированы по версии API.
В следующем примере показаны некоторые свойства со страницы "Учетные записи хранения".
Для нашего примера учетной записи хранения ваш шаблон может выглядеть следующим образом.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.1",
"apiProfile": "",
"parameters": {},
"variables": {},
"functions": [],
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2019-06-01",
"name": "learntemplatestorage123",
"location": "westus",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2",
"properties": {
"supportsHttpsTrafficOnly": true
}
}
],
"outputs": {}
}