Экспорт шаблона с помощью Azure CLI

Чтобы упростить создание шаблонов Azure Resource Manager, можно экспортировать шаблон из существующих ресурсов. Экспортированный шаблон помогает понять синтаксис и свойства JSON, которые развертывают ресурсы. Чтобы автоматизировать будущие развертывания, начните с изменения экспортированного шаблона для своего сценария. В процессе экспорта шаблона будет предпринята попытка создать пригодный для использования шаблон. Однако прежде чем экспортированные шаблоны можно будет использовать для развертывания ресурсов Azure, в них необходимо внести ряд изменений.

Диспетчер ресурсов позволяет выбрать один или несколько ресурсов для экспорта в шаблон. Вы можете выбрать именно те ресурсы, которые необходимы в шаблоне.

Эта статья содержит сведения о том, как экспортировать шаблоны с помощью Azure CLI. Другие варианты см. в статьях:

Выбор правильного варианта экспорта

Шаблон можно экспортировать двумя способами:

  • Экспорт из группы ресурсов или ресурса. В этом варианте создается новый шаблон из существующих ресурсов. Экспортированный шаблон — это "моментальный снимок" текущего состояния группы ресурсов. Вы можете экспортировать всю группу ресурсов или определенные ресурсы в ней.

  • Сохранение с помощью журнала. В этом варианте выполняется получение точной копии шаблона, используемой для развертывания. Вы задаете развертывание из журнала развертывания.

В зависимости от выбранного варианта экспортированные шаблоны имеют разные качества.

Из группы ресурсов или ресурса Из журнала
Шаблон создается автоматически. Вероятно, перед развертыванием потребуется оптимизировать код. Шаблон создается в точном соответствии с ранее созданным шаблоном. Его можно будет развернуть без каких-либо изменений.
Шаблон — это моментальный снимок текущего состояния ресурсов. Он включает все изменения, внесенные вручную после развертывания. В шаблоне отображаются только сведения о состоянии ресурсов во время развертывания. Изменения, внесенные вручную после развертывания, не включаются.
Вы можете выбрать из группы ресурсов ресурсы, которые необходимо экспортировать. Включаются все ресурсы для определенного развертывания. Нельзя выбрать подмножество этих ресурсов или добавить ресурсы, которые были добавлены в другое время.
Шаблон включает все свойства ресурсов, в том числе некоторые свойства, которые обычно не задаются во время развертывания. Возможно, перед повторным использованием шаблона эти свойства потребуется удалить или очистить. Шаблон включает только свойства, необходимые для развертывания. Он более лаконичен, и его легче считывать.
Возможно, шаблон включает не все параметры, необходимые для повторного использования. Большинство значений свойств жестко запрограммированы в шаблоне. Чтобы повторно развернуть шаблон в других средах, необходимо добавить параметры, повышающие возможность настройки ресурсов. Можно снять флажок Включить параметры, чтобы можно было создавать собственные параметры. Шаблон включает параметры, которые упрощают повторное развертывание в разных средах.

Экспортируйте шаблон из группы ресурсов или ресурса, если:

  • необходимо захватить изменения, внесенные в ресурсы после исходного развертывания;
  • необходимо выбрать ресурсы для экспорта.
  • Ресурсы были созданы без помощи шаблона.

Экспортируйте шаблон из журнала, если:

  • необходим шаблон, при повторном использовании которого не возникнет трудностей;
  • не требуется включать изменения, внесенные после исходного развертывания.

Ограничения

Экспорт не гарантируется успешно. Экспорт не является надежным способом превратить существующие ресурсы в шаблоны, которые доступны для использования в рабочей среде. Лучше создавать ресурсы с нуля с помощью рукописного файла Bicep, шаблона ARM или terraform.

При экспорте из группы ресурсов или ресурса экспортированный шаблон создается из опубликованных схем для каждого типа ресурсов. Иногда схема не имеет последней версии для типа ресурса. Проверьте, включает ли экспортированный шаблон необходимые свойства. При необходимости измените экспортированный шаблон, чтобы использовать требуемую версию API.

В экспортированных паролях могут отсутствовать некоторые параметры пароля. Прежде чем использовать шаблоны для развертывания ресурсов, ознакомьтесь со справочником по шаблонам и добавьте эти параметры вручную.

Функция экспорта шаблона не поддерживает экспорт ресурсов службы "Фабрика данных Azure". Дополнительные сведения о том, как можно экспортировать ресурсы Фабрики данных, см. в статье Копирование или клонирование фабрики данных в службе "Фабрика данных Azure".

Чтобы экспортировать ресурсы, созданные с помощью классической модели развертывания, необходимо перенести их в модель развертывания Azure Resource Manager.

Если при экспорте шаблона появляется предупреждение о том, что тип ресурса не был экспортирован, свойства этого ресурса можно по-прежнему обнаружить. Свойства ресурсов см. в справочнике по шаблонам. Тип ресурса также можно найти в REST API Azure.

Группа ресурсов, для которой создается экспортированный шаблон, может содержать не более 200 ресурсов. При попытке экспортировать группу ресурсов, которая содержит более 200 ресурсов, появляется сообщение об ошибке Export template is not supported for resource groups more than 200 resources.

Экспорт шаблона из группы ресурсов

После успешной настройки группы ресурсов вы можете экспортировать шаблон Azure Resource Manager для группы ресурсов.

Чтобы экспортировать все ресурсы в группу ресурсов, используйте командлет az group export и укажите имя группы ресурсов.

az group export --name demoGroup

Сценарий отображает шаблон в консоли. Чтобы сохранить файл, используйте:

az group export --name demoGroup > exportedtemplate.json

Вместо экспорта всех ресурсов в группе ресурсов можно отдельно выбрать ресурсы для экспорта.

Чтобы экспортировать один ресурс, передайте этот идентификатор ресурса.

storageAccountID=$(az resource show --resource-group demoGroup --name demostg --resource-type Microsoft.Storage/storageAccounts --query id --output tsv)
az group export --resource-group demoGroup --resource-ids $storageAccountID

Чтобы экспортировать более одного ресурса, передайте идентификаторы ресурсов, указанные через запятую. Чтобы экспортировать все ресурсы, не указывайте этот аргумент или укажите "*".

az group export --resource-group <resource-group-name> --resource-ids $storageAccountID1 $storageAccountID2

При экспорте шаблона можно указать, используются ли параметры в шаблоне. По умолчанию параметры для имен ресурсов включены, однако у них отсутствует значение по умолчанию.

"parameters": {
  "serverfarms_demoHostPlan_name": {
    "type": "String"
  },
  "sites_webSite3bwt23ktvdo36_name": {
    "type": "String"
  }
}

Если при экспорте шаблона вы используете параметр --skip-resource-name-params, параметры для имен ресурсов не включаются в шаблон. Вместо этого имя ресурса задается непосредственно в ресурсе с текущим значением. Нельзя настроить имя во время развертывания.

"resources": [
  {
    "type": "Microsoft.Web/serverfarms",
    "apiVersion": "2022-09-01",
    "name": "demoHostPlan",
    ...
  }
]

При использовании параметра --include-parameter-default-value при экспорте шаблона, параметр шаблона включает значение по умолчанию, для которого задано текущее значение. Можно либо использовать это значение по умолчанию, либо перезаписать значение по умолчанию, передав другое значение.

"parameters": {
  "serverfarms_demoHostPlan_name": {
    "defaultValue": "demoHostPlan",
    "type": "String"
  },
  "sites_webSite3bwt23ktvdo36_name": {
    "defaultValue": "webSite3bwt23ktvdo36",
    "type": "String"
  }
}

Сохранение шаблона из журнала развертываний

Шаблон можно сохранить из развертывания в истории развертывания. Вы получаете именно тот шаблон, который использовался для развертывания.

Чтобы получить шаблон из развертывания группы ресурсов, воспользуйтесь командой az deployment group export. Укажите имя развертывания, которое нужно получить. Сведения о том, как получить имя развертывания, см. в статье Просмотр журнала развертывания с помощью Azure Resource Manager.

az deployment group export --resource-group demoGroup --name demoDeployment

Шаблон отобразится в консоли. Чтобы сохранить файл, используйте:

az deployment group export --resource-group demoGroup --name demoDeployment > demoDeployment.json

Чтобы развернуть шаблоны на других уровнях, используйте следующие командлеты:

Следующие шаги