Azure Resource Manager 배포 모드Azure Resource Manager deployment modes

리소스를 배포할 때 배포를 증분 업데이트 또는 전체 업데이트할지 지정합니다.When deploying your resources, you specify that the deployment is either an incremental update or a complete update. 이러한 두 모드 간 주요 차이점은 Resource Manager가 템플릿에 없는 리소스 그룹에서 기존 리소스를 처리하는 방식입니다.The primary 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. 템플릿에 지정되었지만 condition(조건)이 false로 평가되어 배포되지 않은 리소스는 삭제되지 않습니다.Resources that are specified in the template, but not deployed because a condition evaluates to false, aren't deleted.

복사 루프에서 전체 모드를 사용할 때는 주의 해야 합니다.Be careful using complete mode with copy loops. 복사 루프를 확인 한 후 템플릿에 지정 되지 않은 모든 리소스는 삭제 됩니다.Any resources that aren't specified in the template after resolving the copy loop are 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.

리소스 종류의 삭제 처리 방식에 대한 목록은 전체 모드 배포에 대한 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 are not 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:

  • 리소스 AResource A
  • 리소스 BResource B
  • 리소스 CResource C

템플릿은 다음 항목을 포함합니다.Template contains:

  • 리소스 AResource A
  • 리소스 BResource B
  • 리소스 DResource D

리소스 그룹이 증분 모드로 배포된 경우 다음 항목을 포함합니다.When deployed in incremental mode, the resource group has:

  • 리소스 AResource A
  • 리소스 BResource B
  • 리소스 CResource C
  • 리소스 DResource D

리소스 C가 전체 모드로 배포된 경우 삭제됩니다.When deployed in complete mode, Resource C is deleted. 리소스 그룹은 다음 항목을 포함합니다.The resource group has:

  • 리소스 AResource A
  • 리소스 BResource B
  • 리소스 DResource 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