出错时回退以成功部署

部署失败时,可以自动重新部署部署历史记录中先前成功的部署。 如果基础结构部署存在一个已知良好的状态,并且你希望还原到此状态,则此功能非常有用。 你可以指定特定的较早部署或上次成功的部署。

重要

此功能通过重新部署较早的部署来回滚失败的部署。 其结果可能与撤消失败部署所得到的结果不同。 请确保自己了解如何重新部署较早的部署。

重新部署注意事项

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

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

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

如果指定的较早部署在部署历史记录中不存在,则回滚将返回错误。

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

指定的部署必须已成功。

后续步骤