共用方式為


錯誤發生時回滾以確保部署成功

部署失敗時,您可以從部署歷程記錄自動重新部署先前成功的部署。 如果您有基礎結構部署的已知良好狀態,且想要還原為此狀態,這項功能會很有用。 您可以指定特定先前的部署或最後一次成功的部署。

這很重要

此功能會藉由重新佈建先前的版本來回復失敗的佈建。 此結果可能會與您預期復原失敗部署的結果不同。 請確定您已瞭解先前部署的重新部署方式。

重新部署的考慮

使用這項功能之前,請考慮如何處理重新部署的這些詳細數據:

  • 即使您在先前的部署期間使用累加模式,先前的部署仍會使用完整模式來執行。 當先前的部署使用累加式部署時,以完整模式重新部署可能會產生非預期的結果。 完整模式表示刪除先前部署中未包含的任何資源。 指定先前的部署,代表您想要存在於資源群組中的所有資源及其狀態。 如需詳細資訊,請參閱 部署模式
  • 重新部署的執行方式與先前使用相同的參數執行一樣。 您無法變更參數。
  • 重新部署只會影響資源,任何數據變更都不會受到影響。
  • 您只能搭配資源群組部署使用此功能。 它不支援訂用帳戶、管理群組或租用戶層級部署。 如需訂用帳戶層級部署的詳細資訊,請參閱 在訂用帳戶層級建立資源群組和資源
  • 您只能搭配根層級部署使用此選項。 來自嵌套範本的部署無法被重新部署。

若要使用此選項,您的部署在部署歷程記錄中必須具有唯一的名稱。 只有透過具唯一性的名稱,才能辨識特定的部署。 如果您沒有唯一識別的名稱,失敗的部署可能會在歷程記錄中覆蓋成功的部署。

如果您指定部署歷程記錄中不存在的先前部署,復原會傳回錯誤。

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 命令列介面 (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

若要在目前的部署失敗時重新部署最後一次成功部署,請使用:

{
  "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>"
    }
  }
}

指定的部署必須成功。

後續步驟