Использование Azure PowerShell для экспорта шаблона

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

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

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

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

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

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

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

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

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

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

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

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

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

Ограничения

Экспорт не гарантируется. Экспорт не является надежным способом превратить существующие ресурсы в шаблоны, которые можно использовать в рабочей среде. Лучше создавать ресурсы с нуля с помощью файла 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 для группы ресурсов.

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

Export-AzResourceGroup -ResourceGroupName demoGroup

При этом шаблон сохраняется как локальный файл.

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

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

$resource = Get-AzResource `
  -ResourceGroupName <resource-group-name> `
  -ResourceName <resource-name> `
  -ResourceType <resource-type>
Export-AzResourceGroup `
  -ResourceGroupName <resource-group-name> `
  -Resource $resource.ResourceId

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

Export-AzResourceGroup `
  -ResourceGroupName <resource-group-name> `
  -Resource @($resource1.ResourceId, $resource2.ResourceId)

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

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

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

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

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

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

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

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

Используйте командлет Save-AzResourceGroupDeploymentTemplate, чтобы получить шаблон из развертывания группы ресурсов. Укажите имя развертывания, которое нужно получить. Сведения о том, как получить имя развертывания, см. в статье Просмотр журнала развертывания с помощью Azure Resource Manager.

Save-AzResourceGroupDeploymentTemplate -ResourceGroupName demoGroup -DeploymentName demoDeployment

Шаблон будет сохранен в виде локального файла с именем развертывания.

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

Дальнейшие действия