出错时回退以成功部署

部署失败时,可以从部署历史记录中自动重新部署之前成功的部署。 如果你的基础结构部署状态已知良好,并且想要还原到此状态,此功能非常有用。 可以指定特定的早期部署或上次成功部署。

重要

此功能通过重新部署较早的部署来回滚失败的部署。 此结果可能与撤消失败的部署所期望的结果不同。 请确保了解之前部署的重新部署方式。

重新部署的注意事项

在使用此功能之前,请考虑以下有关如何处理重新部署的详细信息:

  • 即使之前部署期间使用了增量模式,以前的部署也使用完整模式运行。 如果较早的部署使用增量模式,那么,以完整模式重新部署可能会产生意外的结果。 完整模式意味着删除上一部署中不包含的任何资源。 指定一个较早的部署,该部署代表你希望包含在资源组中的所有资源及其状态。 有关详细信息,请参阅 部署模式
  • 重新部署的执行方式与之前使用相同参数的情况完全一致。 无法更改参数。
  • 重新部署仅影响资源,任何数据更改都不会影响。
  • 只能将此功能用于资源组部署。 它不支持订阅、管理组或租户级别部署。 有关订阅级别部署的详细信息,请参阅 在订阅级别创建资源组和资源
  • 只能对根级别部署使用此选项。 从嵌套模板进行的部署不可用于重新部署。

若要使用此选项,部署必须在部署历史记录中具有唯一名称。 必须有唯一名称才能识别特定部署。 如果没有唯一名称,失败的部署可能会覆盖历史记录中的成功部署。

如果指定的早期部署在部署历史记录中不存在,回滚操作会返回错误。

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.chinacloudapi.cn/templates/template.json",
      "contentVersion": "1.0.0.0"
    },
    "mode": "Incremental",
    "parametersLink": {
      "uri": "http://mystorageaccount.blob.core.chinacloudapi.cn/templates/parameters.json",
      "contentVersion": "1.0.0.0"
    },
    "onErrorDeployment": {
      "type": "LastSuccessful",
    }
  }
}

若要在当前部署失败时重新部署特定部署,请使用:

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

指定的部署必须成功。

后续步骤