次の方法で共有


エラー発生時には正常にデプロイされた状態にロールバックする

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

重要

この機能は、以前のデプロイを再デプロイすることで、失敗したデプロイをロールバックします。 この結果は、失敗したデプロイを元に戻すことで期待されるものとは異なる場合があります。 以前のデプロイの再デプロイ方法を理解していることを確認します。

再デプロイに関する考慮事項

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

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

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

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

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(Azure コマンドライン インターフェイス)

最後に成功したデプロイを再デプロイするには、フラグとして --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>"
    }
  }
}

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

次のステップ