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


Режимы развертывания Azure Resource Manager

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

Это важно

Используйте стеки развертывания для удаления ресурсов при использовании шаблонов ARM или файлов Bicep, так как полный режим будет постепенно выводиться из употребления.

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

Режим по умолчанию является добавочным.

Инкрементальный режим

В добавочном режиме Resource Manager оставляет неизменными ресурсы, которые существуют в группе ресурсов, но не указаны в шаблоне. Ресурсы в шаблоне добавляются в группу ресурсов.

Это важно

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

При повторном развертывании существующего ресурса в добавочном режиме все свойства повторно применяются. Свойства не добавляются постепенно. Частое недоразумение заключается в том, чтобы думать, что свойства, не указанные в шаблоне, остаются неизменными. Если вы не указываете определенные свойства, Resource Manager интерпретирует развертывание как перезаписывание этих значений. Свойства, которые не включены в шаблон, сбрасываются на значения по умолчанию. Укажите все значения, отличные от значения по умолчанию для ресурса, а не только те, которые вы обновляете. Определение ресурса в шаблоне всегда содержит окончательное состояние ресурса. Он не может представлять частичное обновление существующего ресурса.

Предупреждение

В редких случаях можно указать свойства в ресурсе или в одном из дочерних ресурсов. Два распространенных примера : подсети в виртуальных сетях и значения конфигурации сайта для веб-приложений. В этих случаях необходимо тщательно обрабатывать добавочные обновления.

Для подсетей укажите значения с помощью свойства subnets в ресурсе Microsoft.Network/virtualNetworks. Не определяйте значения с помощью дочернего ресурса Microsoft.Network/virtualNetworks/subnets. Если подсети определены в виртуальной сети, можно повторно развернуть виртуальную сеть и не потерять подсети.

Для значений конфигурации сайта значения реализуются в дочернем ресурсе типа Microsoft.Web/sites/config. Если вы повторно развернете веб-приложение и укажете пустой объект в значениях конфигурации, дочерний ресурс не будет обновлен. Однако если вы предоставляете новые значения конфигурации сайта, то дочерний тип ресурса обновляется.

Полный режим

Предупреждение

Не рекомендуется использовать полный режим. Если вы хотите выполнять операции удаления с помощью развертываний шаблонов Bicep или ARM, используйте стеки развертывания.

В полном режиме Resource Manager удаляет ресурсы, существующие в группе ресурсов, но не указаны в шаблоне.

Примечание.

Всегда используйте операцию what-if перед развертыванием шаблона в полном режиме. Функция "Что если" показывает, какие ресурсы будут созданы, удалены или изменены. Используйте what-if, чтобы избежать непреднамеренного удаления ресурсов.

Если шаблон содержит ресурс, который не развернут, так как условие оценивается как false, результат зависит от версии REST API, используемой для развертывания шаблона. Если вы используете версию ранее 2019-05-10, ресурс не удаляется. При использовании 2019-05-10 или более поздней версии ресурс удаляется. Последние версии Azure PowerShell и Azure CLI удаляют ресурс.

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

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

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

Например, если группа ресурсов содержит зону DNS (тип ресурса) и запись CNAME (Microsoft.Network/dnsZonesMicrosoft.Network/dnsZones/CNAMEтип ресурса), зона DNS является родительским ресурсом для записи CNAME. Если вы развертываете с полным режимом и не включаете зону DNS в шаблон, зона DNS и запись CNAME удаляются. Если вы включаете зону DNS в шаблон, но не включаете запись CNAME, CNAME не удаляется.

Список способов удаления типов ресурсов см. в разделе "Удаление ресурсов Azure" для развертывания полного режима.

Если группа ресурсов заблокирована, полный режим не удаляет ресурсы.

Примечание.

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

Развертывания уровня подписки не поддерживают полный режим.

В настоящее время портал не поддерживает полный режим.

Пример результата

Чтобы проиллюстрировать разницу между добавочными и полными режимами, рассмотрим следующий сценарий.

Группа ресурсов содержит следующее:

  • Ресурс A
  • Ресурс B
  • Ресурс C

Шаблон содержит следующее:

  • Ресурс A
  • Ресурс B
  • Ресурс D

При развертывании в добавочном режиме группа ресурсов имеет:

  • Ресурс A
  • Ресурс B
  • Ресурс C
  • Ресурс D

При развертывании в полном режиме ресурс C удаляется. Группа ресурсов имеет следующие функции:

  • Ресурс A
  • Ресурс B
  • Ресурс D

Настройка режима развертывания

Чтобы задать режим развертывания при развертывании с помощью PowerShell, используйте Mode этот параметр.

New-AzResourceGroupDeployment `
  -Mode Complete `
  -Name ExampleDeployment `
  -ResourceGroupName ExampleResourceGroup `
  -TemplateFile c:\MyTemplates\storage.json

Чтобы задать режим развертывания при развертывании с помощью Azure CLI, используйте mode этот параметр.

az deployment group create \
  --mode Complete \
  --name ExampleDeployment \
  --resource-group ExampleResourceGroup \
  --template-file storage.json

В следующем примере показан связанный шаблон в режиме поэтапного развертывания:

"resources": [
  {
    "type": "Microsoft.Resources/deployments",
    "apiVersion": "2025-04-01",
    "name": "linkedTemplate",
    "properties": {
      "mode": "Incremental",
          <nested-template-or-external-template>
    }
  }
]

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