部署失敗時,您可以從部署歷程記錄自動重新部署先前成功的部署。 如果您有基礎結構部署的已知良好狀態,且想要還原為此狀態,這項功能會很有用。 您可以指定特定先前的部署或最後一次成功的部署。
這很重要
此功能會藉由重新佈建先前的版本來回復失敗的佈建。 此結果可能會與您預期復原失敗部署的結果不同。 請確定您已瞭解先前部署的重新部署方式。
重新部署的考慮
使用這項功能之前,請考慮如何處理重新部署的這些詳細數據:
- 即使您在先前的部署期間使用累加模式,先前的部署仍會使用完整模式來執行。 當先前的部署使用累加式部署時,以完整模式重新部署可能會產生非預期的結果。 完整模式表示刪除先前部署中未包含的任何資源。 指定先前的部署,代表您想要存在於資源群組中的所有資源及其狀態。 如需詳細資訊,請參閱 部署模式。
- 重新部署的執行方式與先前使用相同的參數執行一樣。 您無法變更參數。
- 重新部署只會影響資源,任何數據變更都不會受到影響。
- 您只能搭配資源群組部署使用此功能。 它不支援訂用帳戶、管理群組或租用戶層級部署。 如需訂用帳戶層級部署的詳細資訊,請參閱 在訂用帳戶層級建立資源群組和資源。
- 您只能搭配根層級部署使用此選項。 來自嵌套範本的部署無法被重新部署。
若要使用此選項,您的部署在部署歷程記錄中必須具有唯一的名稱。 只有透過具唯一性的名稱,才能辨識特定的部署。 如果您沒有唯一識別的名稱,失敗的部署可能會在歷程記錄中覆蓋成功的部署。
如果您指定部署歷程記錄中不存在的先前部署,復原會傳回錯誤。
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>"
}
}
}
指定的部署必須成功。
後續步驟
- 若要瞭解完整和累加模式,請參閱 Azure Resource Manager 部署模式。
- 若要瞭解如何在範本中定義參數,請參閱 瞭解 Azure Resource Manager 範本的結構和語法。