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

При развертывании имеющихся ресурсов можно указать, что развертывание является добавочным или полным обновлением.When deploying your resources, you specify that the deployment is either an incremental update or a complete update. Различие между этими двумя режимами заключается в том, как диспетчер ресурсов обрабатывает существующие ресурсы в группе ресурсов, которые не находятся в шаблоне.The difference between these two modes is how Resource Manager handles existing resources in the resource group that aren't in the template. По умолчанию используется пошаговый режим.The default mode is incremental.

Для обоих режимов Resource Manager пытается создать все ресурсы, указанные в шаблоне.For both modes, Resource Manager tries to create all resources specified in the template. Если ресурс уже существует в группе ресурсов и его параметры не изменились, для этого ресурса не выполняются операции.If the resource already exists in the resource group and its settings are unchanged, no operation is taken for that resource. Если значения свойств ресурса были изменены, они обновятся в ресурсе.If you change the property values for a resource, the resource is updated with those new values. При попытке обновить расположение или тип имеющегося ресурса развертывание завершится ошибкой.If you try to update the location or type of an existing resource, the deployment fails with an error. Вместо этого вы можете развернуть новый ресурс нужного вам типа с необходимым расположением.Instead, deploy a new resource with the location or type that you need.

Полный режимComplete mode

При использовании полного режима Resource Manager удаляет ресурсы, которые существуют в группе ресурсов, но не указаны в шаблоне.In complete mode, Resource Manager deletes resources that exist in the resource group but aren't specified in the template.

Если шаблон содержит ресурс, который не развернут, так как условие принимает значение false, результат зависит от того, какая версия REST API используется для развертывания шаблона.If your template includes a resource that isn't deployed because condition evaluates to false, the result depends on which REST API version you use to deploy the template. Если вы используете более раннюю версию, чем 2019-05-10, ресурс не удаляется.If you use a version earlier than 2019-05-10, the resource isn't deleted. В 2019-05-10 или более поздней версии ресурс удаляется.With 2019-05-10 or later, the resource is deleted. Последние версии Azure PowerShell и Azure CLI удаляют ресурс.The latest versions of Azure PowerShell and Azure CLI delete the resource.

Будьте внимательны при использовании полного режима с циклами копирования.Be careful using complete mode with copy loops. Все ресурсы, не указанные в шаблоне после разрешения цикла копирования, удаляются.Any resources that aren't specified in the template after resolving the copy loop are deleted.

Если развернуть в шаблоне несколько групп ресурсов, то ресурсы в группе ресурсов, указанной в операции развертывания, могут быть удалены.If you deploy to more than one resource group in a template, resources in the resource group specified in the deployment operation are eligible to be deleted. Ресурсы во вторичных группах ресурсов не удаляются.Resources in the secondary resource groups aren't deleted.

Существуют некоторые отличия в том, как типы ресурсов обрабатывают Удаление завершенного режима.There are some differences in how resource types handle complete mode deletions. Родительские ресурсы автоматически удаляются, если находятся не на шаблоне, который развертывается в полном режиме.Parent resources are automatically deleted when not in a template that's deployed in complete mode. Некоторые дочерние ресурсы не удаляются автоматически, если находятся вне шаблона.Some child resources aren't automatically deleted when not in the template. Однако эти дочерние ресурсы удаляются, если родительский ресурс удаляется.However, these child resources are deleted if the parent resource is deleted.

Например, если ваша группа ресурсов содержит зону DNS (тип ресурса Microsoft.Network/dnsZones) и запись CNAME (тип ресурса Microsoft.Network/dnsZones/CNAME), то зона DNS является родительским ресурсом для записи CNAME.For example, if your resource group contains a DNS zone (Microsoft.Network/dnsZones resource type) and a CNAME record (Microsoft.Network/dnsZones/CNAME resource type), the DNS zone is the parent resource for the CNAME record. Если вы используете полный режим во время развертывания и не включаете в вашем шаблоне зону DNS, то и зона DNS, и запись CNAME удаляться.If you deploy with complete mode and don't include the DNS zone in your template, the DNS zone and the CNAME record are both deleted. Если вы включили зону DNS в шаблон, но не включили запись CNAME, CNAME не будет удалена.If you include the DNS zone in your template but don't include the CNAME record, the CNAME isn't deleted.

Дополнительные сведения об удалении разных типов ресурсов см. в статье Deletion of Azure resources for complete mode deployments (Удаление ресурсов Azure для развертываний в полном режиме).For a list of how resource types handle deletion, see Deletion of Azure resources for complete mode deployments.

Если группа ресурсов заблокирована, то полный режим не удаляет ресурсы.If the resource group is locked, complete mode doesn't delete the resources.

Примечание

Только шаблоны корневого уровня поддерживают режим полного развертывания.Only root-level templates support the complete deployment mode. Для связанных или вложенных шаблонов необходимо использовать добавочный режим.For linked or nested templates, you must use incremental mode.

Развертывания уровня подписки не поддерживают полный режим.Subscription level deployments don't support complete mode.

В настоящее время портал не поддерживает полный режим.Currently, the portal doesn't support complete mode.

Пошаговый режимIncremental mode

В пошаговом режиме Resource Manager оставляет без изменения ресурсы, которые существуют в группе ресурсов, но не указаны в шаблоне.In incremental mode, Resource Manager leaves unchanged resources that exist in the resource group but aren't specified in the template.

Однако при повторном развертывании существующего ресурса в инкрементном режиме результат будет другим.However, when redeploying an existing resource in incremental mode, the outcome is a different. Укажите все свойства ресурса, а не только те, которые вы обновляете.Specify all properties for the resource, not just the ones you're updating. Распространенным неверным пониманием является то, что свойства, которые не указаны, остаются неизменными.A common misunderstanding is to think properties that aren't specified are left unchanged. Если вы не укажете определенные свойства, Resource Manager интерпретирует это обновление как перезапись таких значений.If you don't specify certain properties, Resource Manager interprets the update as overwriting those values.

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

Чтобы понять различие между инкрементным и полным режимом, рассмотрим следующий сценарий.To illustrate the difference between incremental and complete modes, consider the following scenario.

Группа ресурсов содержит:Resource Group contains:

  • ресурс А;Resource A
  • ресурс Б;Resource B
  • ресурс В.Resource C

Шаблон содержит:Template contains:

  • ресурс А;Resource A
  • ресурс Б;Resource B
  • ресурс Г.Resource D

При развертывании в пошаговом режиме группа ресурсов содержит:When deployed in incremental mode, the resource group has:

  • ресурс А;Resource A
  • ресурс Б;Resource B
  • ресурс В.Resource C
  • ресурс Г.Resource D

При развертывании в полном режиме ресурс В будет удален.When deployed in complete mode, Resource C is deleted. Группа ресурсов содержит:The resource group has:

  • ресурс А;Resource A
  • ресурс Б;Resource B
  • ресурс Г.Resource D

Установка режима развертыванияSet deployment mode

Чтобы установить режим развертывания при развертывании с помощью PowerShell, используйте параметр Mode.To set the deployment mode when deploying with PowerShell, use the Mode parameter.

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

Чтобы установить режим развертывания при развертывании с помощью Azure CLI, используйте параметр mode.To set the deployment mode when deploying with Azure CLI, use the mode parameter.

az group deployment create \
  --name ExampleDeployment \
  --mode Complete \
  --resource-group ExampleGroup \
  --template-file storage.json \
  --parameters storageAccountType=Standard_GRS

В примере ниже показан связанный шаблон с добавочным режимом развертывания:The following example shows a linked template set to incremental deployment mode:

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

Дополнительная информацияNext steps