エラー発生時に正常なデプロイにロールバックする

デプロイに失敗した場合、デプロイ履歴から以前に成功したデプロイを自動的に再デプロイすることができます。 この機能は、インフラストラクチャのデプロイに関して既知の正常な状態があって、その状態に戻したい場合に便利です。 特定の以前のデプロイを指定することも、最後に成功したデプロイを指定することもできます。

重要

この機能を使用すると、以前のデプロイを再デプロイすることで、失敗したデプロイをロールバックすることができます。 この結果は、失敗したデプロイを元に戻すことから期待していたものと異なる場合があります。 以前のデプロイがどのように再デプロイされるかを確実に理解してください。

再デプロイに関する注意点

この機能を使用する前に、再デプロイの処理方法に関する次の詳細を考慮してください。

  • 以前のデプロイで増分モードを使用した場合でも、前のデプロイは完全モードを使用して実行されます。 完全モードで再デプロイすると、以前のデプロイで増分を使用していた場合に、予期しない結果が生じる可能性があります。 完全モードは、前のデプロイに含まれていないすべてのリソースが削除されることを意味します。 リソース グループ内に存在する必要があるすべてのリソースとその状態を表す、以前のデプロイを指定します。 詳細については、デプロイ モードに関するページを参照してください。
  • 再デプロイは、以前に実行されたときとまったく同じパラメーターで実行されます。 パラメーターを変更することはできません。
  • 再デプロイではリソースのみが影響を受け、データの変更には影響ありません。
  • この機能は、リソース グループのデプロイでのみ使用できます。 サブスクリプション、管理グループ、またはテナント レベルのデプロイはサポートされていません。 サブスクリプション レベル デプロイについて詳しくは、「サブスクリプション レベルでリソース グループとリソースを作成する」をご覧ください。
  • このオプションは、ルート レベルのデプロイでのみ使用できます。 入れ子になったテンプレートのデプロイを再デプロイに使用することはできません。

このオプションを使用するには、デプロイの名前をデプロイ履歴の中で一意にする必要があります。 特定のデプロイを識別できるのは、一意の名前だけです。 一意の名前が付いていないと、失敗したデプロイによって、履歴にある成功したデプロイが上書きされる可能性があります。

デプロイ履歴に存在しない以前のデプロイを指定すると、ロールバックでエラーが返されます。

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

指定したデプロイは成功している必要があります。

次のステップ