Поделиться через


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

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

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

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

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

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

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

  • Сохранение с помощью журнала. Этот параметр поддерживает экспорт только шаблонов JSON ARM. Он получает точную копию шаблона, используемого для развертывания, что позволяет выбрать определенное развертывание из журнала развертывания. После экспорта их можно декомпилировать в файлы Bicep.

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

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

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

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

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

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

Ограничения

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

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

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

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