デプロイメント グループを管理する

このガイドでは、デプロイ グループの作成、管理、削除の方法について説明します。

デプロイ グループは、有向非巡回グラフに配置されたデプロイの集合です。デプロイ グループを使用して、関連するデプロイを単一の論理リソースとして管理します。デプロイはトポロジ順に適用することも、逆トポロジ順に削除することもできます。

始める前に

  1. Infra Manager が有効になっていることと、Google Cloud CLI がインストールされ、初期化されていることを確認します。
  2. 構成管理者roles/config.admin)の Identity and Access Management ロールがあることを確認します。
  3. プロジェクトに既存のデプロイがあることを確認するか、デプロイを作成します。デプロイ グループを作成するためのテスト デプロイを作成するには、次のコマンドを実行します。

    gcloud infra-manager deployments apply projects/PROJECT_ID/locations/LOCATION/deployments/NEW_DEPLOYMENT_ID \
     --service-account=SERVICE_ACCOUNT \
     --git-source-repo="https://github.com/terraform-google-modules/terraform-google-network" \
     --git-source-directory="examples/simple_project_with_regional_network" \
     --git-source-ref="v6.0.1" \
     --input-values=network_name=test-network,project_id=PROJECT_ID \
     --import-existing-resources
    

    次のように置き換えます。

    • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
    • LOCATION: デプロイ グループを作成するために作成する必要があるデプロイの Google Cloud ロケーション。例: us-central1
    • NEW_DEPLOYMENT_ID: デプロイの ID。デプロイ グループを作成するには、既存のデプロイが必要です。次のセクションで EXISTING_DEPLOYMENT_IDNEW_DEPLOYMENT_ID に置き換えます。
    • SERVICE_ACCOUNT: デプロイの作成に使用するサービス アカウントの ID。

デプロイ グループの作成

デプロイ グループは、Infra Manager が単一の論理ユニットとして管理するデプロイの集合です。

デプロイ グループを作成すると、グループに追加する各デプロイはデプロイ ユニットになります。

デプロイ グループを作成するには、次のように REST API を使用します。

  1. deploymentGroups エンドポイントに POST リクエストを送信します。

    curl \
        -X POST \
        -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/deploymentGroups/?deployment_group_id=DEPLOYMENT_GROUP_ID" \
        --data '{
          "deploymentUnits": [
            {
                "id": "DEPLOYMENT_UNIT_ID_1",
                "deployment": "projects/PROJECT_ID/locations/LOCATION/deployments/EXISTING_DEPLOYMENT_ID"
            },
            {
                "id": "DEPLOYMENT_UNIT_ID_2",
                "dependencies": ["DEPENDENT_UNIT_ID"]
            }
          ]
        }'
    

    次のように置き換えます。

    • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
    • LOCATION: デプロイ グループの Google Cloud ロケーション。例: us-central1
    • DEPLOYMENT_GROUP_ID: 作成するデプロイ グループの ID。
    • DEPLOYMENT_UNIT_ID_1: デプロイ グループに追加するデプロイ ユニットの ID。
    • EXISTING_DEPLOYMENT_ID: デプロイ グループのデプロイ ユニットの作成に使用する既存のデプロイの ID。
    • DEPLOYMENT_UNIT_ID_2: デプロイ グループに追加する 2 番目のデプロイ ユニットの ID。デプロイ グループに追加するデプロイ ユニットごとに定義を追加できます。
    • 省略可: DEPENDENT_UNIT_ID: 依存関係として機能するデプロイ ユニットの ID。この依存関係は、定義されたユニットの前にプロビジョニングし、後にプロビジョニング解除する必要があります。
  2. deploymentGroup エンドポイントに GET リクエストを送信します。

    curl \
        -X GET \
        -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/deploymentGroups/DEPLOYMENT_GROUP_ID"
    

    次のように置き換えます。

    • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
    • LOCATION: デプロイ グループの Google Cloud ロケーション。例: us-central1
    • DEPLOYMENT_GROUP_ID: 新しいデプロイ グループの ID。

デプロイ グループをプロビジョニングする

デプロイ グループで参照されているデプロイを適用するには、グループをプロビジョニングする必要があります。プロビジョニングでは、deploymentUnits 構造で定義された順序でデプロイが適用されます。このプロセス中にデプロイを作成または更新する必要がある場合は、プロビジョニング リクエストの deploymentSpecs オブジェクトでその定義を指定できます。

デプロイ グループをプロビジョニングするには、次のように REST API を使用します。

  1. provision エンドポイントに POST リクエストを送信します。

    curl \
        -X POST \
        -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/deploymentGroups/DEPLOYMENT_GROUP_ID:provision" \
        --data '{
          "deploymentSpecs": {
            "DEPLOYMENT_UNIT_ID_2": {
                "deploymentId": "DEPLOYMENT_ID_2",
                "deployment": {
                    "terraformBlueprint": {
                        "gitSource": {
                            "directory": "examples/simple_project_with_regional_network",
                            "ref": "v6.0.1",
                            "repo": "https://github.com/terraform-google-modules/terraform-google-network"
                        },
                        "inputValues": {
                            "network_name": {
                                "inputValue": "test-network"
                            }
                        },
                        "externalValues": {
                            "project_id": {
                                "deploymentSource": {
                                    "deployment": "projects/PROJECT_ID/locations/LOCATION/deployments/EXISTING_DEPLOYMENT_ID",
                                    "outputName": "project_id"
                                }
                            }
                        }
                    },
                    "serviceAccount": "SERVICE_ACCOUNT",
                    "importExistingResources": true
                }
            }
          }
        }'
    

    次のように置き換えます。

    • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
    • LOCATION: デプロイ グループの Google Cloud ロケーション。例: us-central1
    • DEPLOYMENT_GROUP_ID: 新しいデプロイ グループの ID。
    • DEPLOYMENT_UNIT_ID_2: デプロイ グループに追加する 2 番目のデプロイ ユニットの ID。デプロイ グループに追加するデプロイ ユニットごとに定義を追加できます。
    • DEPLOYMENT_ID_2: デプロイ グループに追加する 2 番目のデプロイ ユニットの文字列 ID。
    • EXISTING_DEPLOYMENT_ID: 既存のデプロイの ID。
    • SERVICE_ACCOUNT: デプロイ グループのプロビジョニングに使用するサービス アカウントの文字列 ID。
  2. オペレーション エンドポイントに GET リクエストを送信するには、次のように REST API を使用します。

     curl \
         -X GET \
         -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
         -H "Content-Type: application/json" \
         "https://config.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID"
    

    次のように置き換えます。

    • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
    • LOCATION: デプロイ グループの Google Cloud ロケーション。例: us-central1
    • OPERATION_ID: クエリするオペレーション ID。例: operation-1000000000000-64d67ecd2868c-caa044f9-6b48677e
  3. Infra Manager は、長時間実行オペレーション(LRO)を使用してプロビジョニングの進行状況を表示します。成功したレスポンスは、プロビジョニングが完了したことを示します。

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/operations/OP_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.config.v1.OperationMetadata",
        "createTime": "2026-02-24T01:27:57.045161236Z",
        "target": "projects/PROJECT_ID/locations/LOCATION/deploymentGroups/DEPLOYMENT_GROUP_ID",
        "verb": "update",
        "requestedCancellation": false,
        "apiVersion": "v1",
        "provisionDeploymentGroupMetadata": {
          "step": "PROVISIONING_DEPLOYMENT_UNITS",
          "deploymentUnitProgresses": [
            {
              "unitId": "DEPLOYMENT_UNIT_ID_1",
              "deployment": "projects/PROJECT_ID/locations/LOCATION/deployments/EXISTING_DEPLOYMENT_ID",
              "state": "APPLYING_DEPLOYMENT",
              "intent": "UPDATE_DEPLOYMENT",
              "deploymentOperationSummary": {
                "build": "56c739c7-cf42-457c-a889-0e0c139cf7b3",
                "logs": "gs://path/to/log",
                "content": "gs://path/to/content",
                "artifacts": "gs://path/to/artifacts"
              }
            },
            {
              "unitId": "DEPLOYMENT_UNIT_ID_2",
              "state": "QUEUED",
              "intent": "CREATE_DEPLOYMENT"
            }
          ]
        }
      }
    }
    

    ここで

    • OP_ID: オペレーション ID。Infra Manager によって生成されます。
    • EXISTING_DEPLOYMENT_ID: Infra Manager が DEPLOYMENT_UNIT_ID_1 の前にプロビジョニングするデプロイの ID。

デプロイメント グループのリビジョンを一覧表示する

Infra Manager は、provision または deprovision オペレーションが完了すると、デプロイ グループのリビジョンを作成します。

デプロイ グループのリビジョンを一覧表示するには、次のように REST API を使用します。

  1. revisions エンドポイントに GET リクエストを送信します。

    curl \
        -X GET \
        -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/deploymentGroups/DEPLOYMENT_GROUP_ID/revisions"
    

    次のように置き換えます。

    • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
    • LOCATION: デプロイ グループの Google Cloud ロケーション。例: us-central1
    • DEPLOYMENT_GROUP_ID: リビジョンを一覧表示するデプロイ グループの ID。

デプロイ グループを更新する

デプロイ グループを更新するには、デプロイ グループの定義を変更します。必要に応じて、更新された定義をデプロイ グループにプロビジョニングできます。

デプロイ グループを更新するには、次のように REST API を使用します。

  1. deploymentGroups エンドポイントに PATCH リクエストを送信します。

    curl \
        -X PATCH \
        -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/deploymentGroups/DEPLOYMENT_GROUP_ID" \
        --data '{
          "deploymentUnits": [
            {
                "id": "DEPLOYMENT_UNIT_ID_3"
            }
          ]
        }'
    

    次のように置き換えます。

    • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
    • LOCATION: デプロイ グループの Google Cloud ロケーション。例: us-central1
    • DEPLOYMENT_GROUP_ID: 更新するデプロイ グループの ID。
    • DEPLOYMENT_UNIT_ID_3: 更新するデプロイの ID。
  2. 省略可: 更新されたデプロイ グループをプロビジョニングします。provision エンドポイントに POST リクエストを送信します。

    curl \
        -X POST \
        -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/deploymentGroups/DEPLOYMENT_GROUP_ID:provision" \
        --data '{
          "deploymentSpecs": {
            "DEPLOYMENT_UNIT_ID_3": {
                "deploymentId": "EXISTING_DEPLOYMENT_ID",
                "deployment": {
                    "terraformBlueprint": {
                        "gitSource": {
                            "directory": "examples/simple_project_with_regional_network",
                            "ref": "v6.0.1",
                            "repo": "https://github.com/terraform-google-modules/terraform-google-network"
                        },
                        "inputValues": {
                            "network_name": {
                                "inputValue": "test-network"
                            },
                            "project_id": {
                              "inputValue": "PROJECT_ID"
                            }
                        }
                    },
                    "serviceAccount": "SERVICE_ACCOUNT",
                    "importExistingResources": true
                }
            }
          }
        }'
    

    次のように置き換えます。

    • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
    • LOCATION: デプロイ グループの Google Cloud ロケーション。例: us-central1
    • DEPLOYMENT_GROUP_ID: 更新するデプロイ グループの ID。
    • DEPLOYMENT_UNIT_ID_3: デプロイ グループに追加するサードパーティのデプロイ ユニットの ID。
    • EXISTING_DEPLOYMENT_ID: 既存のデプロイの ID。
    • SERVICE_ACCOUNT: デプロイ グループの更新に使用するサービス アカウントの文字列 ID。

    デプロイ グループをプロビジョニングすると、最後に成功したリビジョンに基づく変更がデプロイ グループ内のデプロイに適用されます。

    デプロイ グループの定義からデプロイを削除してプロビジョニングすると、削除されたデプロイとそのリソースが削除されます。

  3. 成功したレスポンスは、プロビジョニングが完了したことを示します。

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/operations/OP_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.config.v1.OperationMetadata",
        "createTime": "2026-02-26T20:03:26.580085899Z",
        "target": "projects/PROJECT_ID/locations/LOCATION/deploymentGroups/DEPLOYMENT_GROUP_ID",
        "verb": "update",
        "requestedCancellation": false,
        "apiVersion": "v1",
        "provisionDeploymentGroupMetadata": {
          "step": "PROVISIONING_DEPLOYMENT_UNITS",
          "deploymentUnitProgresses": [
            {
              "unitId": "revisions/REVISION_ID/deploymentUnits/DEPLOYMENT_UNIT_ID_2",
              "deployment": "projects/PROJECT_ID/locations/LOCATION/deployments/DEPLOYMENT_ID_2",
              "state": "DELETING_DEPLOYMENT",
              "intent": "CLEAN_UP",
              "deploymentOperationSummary": {
                "deploymentStep": "VALIDATING_REPOSITORY"
              }
            },
            {
              "unitId": "revisions/REVISION_ID/deploymentUnits/DEPLOYMENT_UNIT_ID_1",
              "deployment": "projects/PROJECT_ID/locations/LOCATION/deployments/NEW_DEPLOYMENT_NAME",
              "state": "QUEUED",
              "intent": "CLEAN_UP"
            },
            {
              "unitId": "DEPLOYMENT_UNIT_ID_3",
              "state": "QUEUED",
              "intent": "RECREATE_DEPLOYMENT"
            }
          ]
        }
      },
      "done": false
    }
    

    ここで

    • OP_ID: オペレーション ID を表します。Infra Manager によって生成されます。
    • REVISION_ID: リビジョン ID を表します。Infra Manager によって生成されます。

デプロイ グループのプロビジョニングを解除する

デプロイ グループのプロビジョニングを解除して、参照されているすべてのデプロイと、前回の正常なリビジョンの一部であった(その後削除された)デプロイを削除します。

デプロイ グループのプロビジョニングを解除するには、次のように REST API を使用します。

  1. deprovision エンドポイントに POST リクエストを送信します。

    curl \
        -X POST \
        -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/deploymentGroups/DEPLOYMENT_GROUP_ID:deprovision" \
        --data '{
          "deletePolicy": "DELETE",
          "force": true
        }'
    

    次のように置き換えます。

    • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
    • LOCATION: デプロイ グループの Google Cloud ロケーション。例: us-central1
    • DEPLOYMENT_GROUP_ID: プロビジョニング解除するデプロイ グループの ID。
  2. 成功したレスポンスは、プロビジョニング解除が完了したことを示します。

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/operations/OP_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.config.v1.OperationMetadata",
        "createTime": "2026-02-26T20:12:46.929574561Z",
        "endTime": "2026-02-26T20:14:04.390333218Z",
        "target": "projects/PROJECT_ID/locations/LOCATION/deploymentGroups/DEPLOYMENT_GROUP_ID",
        "verb": "update",
        "requestedCancellation": false,
        "apiVersion": "v1",
        "provisionDeploymentGroupMetadata": {
          "step": "SUCCEEDED",
          "deploymentUnitProgresses": [
            {
              "unitId": "DEPLOYMENT_UNIT_ID",
              "deployment": "projects/PROJECT_ID/locations/LOCATION/deployments/DEPLOYMENT_NAME_3",
              "state": "SUCCEEDED",
              "deploymentOperationSummary": {
                "deploymentStep": "SUCCEEDED"
              }
            }
          ]
        }
      },
      "done": true,
      "response": {
        "@type": "type.googleapis.com/google.cloud.config.v1.DeploymentGroup",
        "name": "projects/PROJECT_ID/locations/LOCATION/deploymentGroups/DEPLOYMENT_GROUP_ID",
        "createTime": "2026-02-24T01:21:14.001716666Z",
        "updateTime": "2026-02-26T20:12:46.931142650Z",
        "state": "ACTIVE",
        "deploymentUnits": [
          {
            "id": "DEPLOYMENT_UNIT_ID_3"
          }
        ],
        "provisioningState": "DEPROVISIONED"
      }
    }
    

デプロイ グループを削除する

デプロイ グループのプロビジョニングを解除しても、そのメタデータは残ります。メタデータを削除するには、デプロイ グループを削除する必要があります。

デプロイ グループを削除するには、次のように REST API を使用します。

  1. DELETE リクエストを deploymentGroups エンドポイントに送信します。リビジョンが存在する場合は、forcetrue に設定します。

    curl \
        -X DELETE \
        -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/deploymentGroups/DEPLOYMENT_GROUP_ID" \
        --data '{
          "force": true
        }'
    

    次のように置き換えます。

    • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
    • LOCATION: デプロイ グループの Google Cloud ロケーション。例: us-central1
    • DEPLOYMENT_GROUP_ID: 削除するデプロイ グループの ID。

次のステップ