다음을 통해 공유


오류 발생 시 성공적인 배포를 위한 롤백

배포에 실패하면 배포 기록에서 이전의 성공적인 배포를 자동으로 다시 배포할 수 있습니다. 이 기능은 인프라 배포의 안정적인 상태를 알고 있고, 그 상태로 되돌리려 할 때 유용합니다. 특정 이전 배포 또는 마지막으로 성공한 배포를 지정할 수 있습니다.

중요합니다

이 기능은 이전 배포를 다시 배포하여 실패한 배포를 롤백합니다. 이 결과는 실패한 배포를 실행 취소할 때 예상한 것과 다를 수 있습니다. 이전 배포를 다시 배포하는 방법을 이해해야 합니다.

재배포 시 고려 사항

이 기능을 사용하기 전에 재배포가 처리되는 방법에 대한 다음 세부 정보를 고려합니다.

  • 이전 배포는 이전 배포 중에 증분 모드를 사용한 경우에도 전체 모드를 사용하여 실행됩니다. 전체 모드에서 다시 배포하면 이전 배포가 증분 방식으로 사용될 때 예기치 않은 결과가 발생할 수 있습니다. 전체 모드는 이전 배포에 포함되지 않은 모든 리소스가 삭제됨을 의미합니다. 리소스 그룹에 존재하려는 모든 리소스 및 해당 상태를 나타내는 이전 배포를 지정합니다. 자세한 내용은 배포 모드를 참조하세요.
  • 다시 배포는 동일한 매개 변수를 사용하여 이전에 실행된 것과 정확히 일치합니다. 매개 변수는 변경할 수 없습니다.
  • 재배포는 리소스에만 영향을 줍니다. 데이터 변경 내용은 영향을 받지 않습니다.
  • 리소스 그룹 배포에서만 이 기능을 사용할 수 있습니다. 구독, 관리 그룹 또는 테넌트 수준 배포를 지원하지 않습니다. 구독 수준 배포에 대한 자세한 내용은 구독 수준에서 리소스 그룹 및 리소스 만들기를 참조하세요.
  • 루트 수준 배포에서만 이 옵션을 사용할 수 있습니다. 중첩된 템플릿의 배포는 다시 배포할 수 없습니다.

이 옵션을 사용하려면 배포 기록에 고유한 이름이 있어야 합니다. 고유한 이름이 있어야 특정 배포를 식별할 수 있습니다. 고유한 이름이 없는 경우 실패한 배포는 기록에서 성공적인 배포를 덮어쓸 수 있습니다.

배포 기록에 없는 이전 배포를 지정하면 롤백에서 오류가 반환됩니다.

PowerShell

마지막으로 성공한 배포를 다시 배포하려면 매개 변수를 -RollbackToLastDeployment 플래그로 추가합니다.

New-AzResourceGroupDeployment -Name ExampleDeployment02 `
  -ResourceGroupName $resourceGroupName `
  -TemplateFile c:\MyTemplates\azuredeploy.json `
  -RollbackToLastDeployment

특정 배포를 다시 배포하려면 매개 변수를 -RollBackDeploymentName 사용하고 배포 이름을 제공합니다. 지정된 배포가 성공해야 합니다.

New-AzResourceGroupDeployment -Name ExampleDeployment02 `
  -ResourceGroupName $resourceGroupName `
  -TemplateFile c:\MyTemplates\azuredeploy.json `
  -RollBackDeploymentName ExampleDeployment01

Azure 커맨드 라인 인터페이스 (CLI)

마지막으로 성공한 배포를 다시 배포하려면 매개 변수를 --rollback-on-error 플래그로 추가합니다.

az deployment group create \
  --name ExampleDeployment \
  --resource-group ExampleGroup \
  --template-file storage.json \
  --parameters storageAccountType=Standard_GRS \
  --rollback-on-error

특정 배포를 다시 배포하려면 매개 변수를 --rollback-on-error 사용하고 배포 이름을 제공합니다. 지정된 배포가 성공해야 합니다.

az deployment group create \
  --name ExampleDeployment02 \
  --resource-group ExampleGroup \
  --template-file storage.json \
  --parameters storageAccountType=Standard_GRS \
  --rollback-on-error ExampleDeployment01

REST API (REST 애플리케이션 프로그래밍 인터페이스)

현재 배포가 실패하는 경우 마지막으로 성공한 배포를 다시 배포하려면 다음을 사용합니다.

{
  "properties": {
    "templateLink": {
      "uri": "http://mystorageaccount.blob.core.windows.net/templates/template.json",
      "contentVersion": "1.0.0.0"
    },
    "mode": "Incremental",
    "parametersLink": {
      "uri": "http://mystorageaccount.blob.core.windows.net/templates/parameters.json",
      "contentVersion": "1.0.0.0"
    },
    "onErrorDeployment": {
      "type": "LastSuccessful",
    }
  }
}

현재 배포가 실패하는 경우 특정 배포를 다시 배포하려면 다음을 사용합니다.

{
  "properties": {
    "templateLink": {
      "uri": "http://mystorageaccount.blob.core.windows.net/templates/template.json",
      "contentVersion": "1.0.0.0"
    },
    "mode": "Incremental",
    "parametersLink": {
      "uri": "http://mystorageaccount.blob.core.windows.net/templates/parameters.json",
      "contentVersion": "1.0.0.0"
    },
    "onErrorDeployment": {
      "type": "SpecificDeployment",
      "deploymentName": "<deploymentname>"
    }
  }
}

지정된 배포가 성공해야 합니다.

다음 단계