Исследование структуры шаблонов Azure Resource Manager

Завершено

В этом модуле рассматривается использование шаблонов Azure Resource Manager (шаблонов ARM) для реализации инфраструктуры как кода. Вы изучите разделы шаблона ARM, узнаете, как развернуть шаблон ARM в Azure, и подробно рассмотрите раздел resources шаблона 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. В будущих модулях Learn вы узнаете, как развернуть более сложную инфраструктуру и как интегрироваться с 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 group deployment createaz deployment group 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": "2023-05-01",
      "name": "learntemplatestorage123",
      "location": "westus",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    }
  ],
  "outputs": {}
}