在錯誤發生時,復原至成功的部署

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

重要

這項功能會藉由重新部署先前的部署來復原失敗的部署。 這項結果可能與您在復原失敗的部署時所預期的不同。 請確定您了解先前的部署將會如何重新部署。

重新部署的考量事項

使用這項功能之前,請考慮下列重新部署處理的相關細節:

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

若要使用此選項,您的部署在部署歷程記錄中必須有唯一的名稱。 特定部署必須具備唯一的名稱才能受到識別。 如果您沒有唯一的名稱,則失敗的部署可能會在歷程記錄中覆寫成功的部署。

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

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

如果目前的部署失敗,若要重新部署最後一個成功的部署,請使用:

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

指定的部署必須成功。

下一步