Mengelola grup deployment

Panduan ini membantu Anda memahami cara membuat, mengelola, dan menghapus grup deployment.

Grup deployment adalah kumpulan deployment yang disusun dalam grafik asiklik terarah. Gunakan grup deployment untuk mengelola deployment terkait sebagai satu resource logis. Anda dapat menerapkan deployment dalam urutan topologi, atau menghapusnya dalam urutan topologi terbalik.

Sebelum memulai

  1. Pastikan Infra Manager diaktifkan, dan Google Cloud CLI diinstal serta diinisialisasi.
  2. Pastikan Anda memiliki peran Identity and Access Management Config Admin (roles/config.admin).
  3. Pastikan project Anda memiliki deployment yang ada, atau buat deployment. Untuk membuat deployment pengujian guna membuat grup deployment, jalankan perintah berikut:

    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
    

    Ganti kode berikut:

    • PROJECT_ID: ID project Anda. Google Cloud
    • LOCATION: lokasi deployment yang perlu Anda buat untuk membuat grup deployment. Google Cloud Misalnya, us-central1.
    • NEW_DEPLOYMENT_ID: ID a deployment. Anda memerlukan deployment yang ada untuk membuat grup deployment. Ganti EXISTING_DEPLOYMENT_ID dengan NEW_DEPLOYMENT_ID di bagian berikut.
    • SERVICE_ACCOUNT: ID akun layanan yang Anda gunakan untuk membuat deployment.

Membuat grup deployment

Grup deployment adalah kumpulan deployment yang dikelola Infra Manager sebagai satu unit logis.

Saat Anda membuat grup deployment, setiap deployment yang Anda tambahkan ke grup adalah unit deployment.

Untuk membuat grup deployment, gunakan REST API sebagai berikut:

  1. Kirim permintaan POST ke endpoint deploymentGroups:

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

    Ganti kode berikut:

    • PROJECT_ID: ID project Anda. Google Cloud
    • LOCATION: lokasi grup deployment. Google Cloud Misalnya, us-central1.
    • DEPLOYMENT_GROUP_ID: ID grup deployment yang ingin Anda buat.
    • DEPLOYMENT_UNIT_ID_1: ID unit deployment yang akan ditambahkan ke grup deployment.
    • EXISTING_DEPLOYMENT_ID: ID deployment yang ada yang Anda gunakan untuk membuat unit deployment dari grup deployment.
    • DEPLOYMENT_UNIT_ID_2: ID unit deployment kedua yang akan ditambahkan ke grup deployment. Anda dapat menambahkan definisi untuk setiap unit deployment yang ingin ditambahkan ke grup deployment.
    • Opsional: DEPENDENT_UNIT_ID: ID unit deployment yang berfungsi sebagai dependensi. Dependensi ini harus disediakan sebelum unit yang ditentukan, dan dihentikan penyediaannya setelah unit tersebut.
  2. Kirim permintaan GET ke endpoint deploymentGroup:

    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"
    

    Ganti kode berikut:

    • PROJECT_ID: ID project Anda. Google Cloud
    • LOCATION: lokasi grup deployment. Google Cloud Misalnya, us-central1.
    • DEPLOYMENT_GROUP_ID: ID grup deployment baru.

Menyediakan grup deployment

Untuk menerapkan deployment yang direferensikan dalam grup deployment, Anda harus menyediakan grup tersebut. Penyediaan menerapkan deployment dalam urutan yang ditentukan oleh struktur deploymentUnits. Jika Anda perlu membuat atau memperbarui deployment selama proses ini, Anda dapat memberikan definisinya dalam objek deploymentSpecs dari permintaan penyediaan Anda.

Untuk menyediakan grup deployment, gunakan REST API sebagai berikut:

  1. Kirim permintaan POST ke endpoint provision:

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

    Ganti kode berikut:

    • PROJECT_ID: ID project Anda. Google Cloud
    • LOCATION: lokasi grup deployment. Google Cloud Misalnya, us-central1.
    • DEPLOYMENT_GROUP_ID: ID grup deployment baru.
    • DEPLOYMENT_UNIT_ID_2: ID unit deployment kedua yang akan ditambahkan ke grup deployment. Anda dapat menambahkan definisi untuk setiap unit deployment yang ingin ditambahkan ke grup deployment.
    • DEPLOYMENT_ID_2: ID string unit deployment kedua yang akan ditambahkan ke grup deployment.
    • EXISTING_DEPLOYMENT_ID: ID deployment yang ada.
    • SERVICE_ACCOUNT: ID string akun layanan yang Anda gunakan untuk menyediakan grup deployment.
  2. Untuk mengirim permintaan GET ke endpoint operasi, gunakan REST API sebagai berikut:

     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"
    

    Ganti kode berikut:

    • PROJECT_ID: ID project Anda. Google Cloud
    • LOCATION: lokasi grup deployment. Google Cloud Misalnya, us-central1.
    • OPERATION_ID: ID operasi yang Anda ingin kueri. Misalnya, operation-1000000000000-64d67ecd2868c-caa044f9-6b48677e
  3. Infra Manager menggunakan operasi yang berjalan lama (LRO) untuk menampilkan progres penyediaan. Respons yang berhasil menunjukkan bahwa penyediaan telah selesai:

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

    Dengan:

    • OP_ID: ID operasi. Dibuat oleh Infra Manager.
    • EXISTING_DEPLOYMENT_ID: ID deployment yang akan disediakan Infra Manager sebelum DEPLOYMENT_UNIT_ID_1.

Mencantumkan revisi grup deployment

Infra Manager membuat revisi grup deployment setelah operasi provision atau deprovision selesai.

Untuk mencantumkan revisi grup deployment, gunakan REST API sebagai berikut:

  1. Kirim permintaan GET ke endpoint revisions:

    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"
    

    Ganti kode berikut:

    • PROJECT_ID: ID project Anda. Google Cloud
    • LOCATION: lokasi grup deployment. Google Cloud Misalnya, us-central1.
    • DEPLOYMENT_GROUP_ID: ID grup deployment yang revisinya ingin Anda cantumkan.

Memperbarui grup deployment

Untuk memperbarui grup deployment, ubah definisi grup deployment Anda. Anda dapat menyediakan definisi yang diperbarui secara opsional ke grup deployment.

Untuk memperbarui grup deployment, gunakan REST API sebagai berikut:

  1. Kirim permintaan PATCH ke endpoint deploymentGroups:

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

    Ganti kode berikut:

    • PROJECT_ID: ID project Anda. Google Cloud
    • LOCATION: lokasi grup deployment. Google Cloud Misalnya, us-central1.
    • DEPLOYMENT_GROUP_ID: ID grup deployment yang ingin Anda perbarui.
    • DEPLOYMENT_UNIT_ID_3: ID deployment yang akan diperbarui.
  2. Opsional: Sediakan grup deployment yang diperbarui. Kirim permintaan POST ke endpoint provision:

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

    Ganti kode berikut:

    • PROJECT_ID: ID project Anda. Google Cloud
    • LOCATION: lokasi grup deployment. Google Cloud Misalnya, us-central1.
    • DEPLOYMENT_GROUP_ID: ID grup deployment yang ingin Anda perbarui.
    • DEPLOYMENT_UNIT_ID_3: ID unit deployment ketiga yang akan ditambahkan ke grup deployment.
    • EXISTING_DEPLOYMENT_ID: ID deployment yang ada.
    • SERVICE_ACCOUNT: ID string akun layanan yang Anda gunakan untuk memperbarui grup deployment.

    Saat Anda menyediakan grup deployment, perubahan berdasarkan revisi terakhir yang berhasil diterapkan ke deployment dalam grup deployment.

    Jika Anda menghapus deployment dari definisi grup deployment, lalu menyediakan, deployment yang dihapus akan dihapus beserta resource-nya.

  3. Respons yang berhasil menunjukkan bahwa penyediaan telah selesai.

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

    Dengan:

    • OP_ID: mewakili ID operasi. Dibuat oleh Infra Manager.
    • REVISION_ID: mewakili ID revisi. Dibuat oleh Infra Manager.

Menghentikan penyediaan grup deployment

Hentikan penyediaan grup deployment untuk menghapus semua deployment yang direferensikan, dan deployment apa pun yang merupakan bagian dari revisi terakhir yang berhasil (tetapi telah dihapus sejak saat itu).

Untuk menghentikan penyediaan grup deployment, gunakan REST API sebagai berikut:

  1. Kirim permintaan POST ke endpoint deprovision:

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

    Ganti kode berikut:

    • PROJECT_ID: ID project Anda. Google Cloud
    • LOCATION: lokasi grup deployment. Google Cloud Misalnya, us-central1.
    • DEPLOYMENT_GROUP_ID: ID grup deployment yang penyediaannya ingin Anda hentikan.
  2. Respons yang berhasil menunjukkan bahwa penghentian penyediaan telah selesai.

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

Menghapus grup deployment

Setelah Anda menghentikan penyediaan grup deployment, metadatanya akan tetap ada. Untuk menghapus metadata, Anda harus menghapus grup deployment.

Untuk menghapus grup deployment, gunakan REST API sebagai berikut:

  1. Kirim permintaan DELETE ke endpoint deploymentGroups. Tetapkan force ke true jika revisi ada.

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

    Ganti kode berikut:

    • PROJECT_ID: ID project Anda. Google Cloud
    • LOCATION: lokasi grup deployment. Google Cloud Misalnya, us-central1.
    • DEPLOYMENT_GROUP_ID: ID grup deployment yang ingin Anda hapus.

Langkah berikutnya