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 berarah. 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 dan 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 untuk 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 Google Cloud project Anda.
    • LOCATION: Google Cloud lokasi deployment yang perlu Anda buat untuk membuat grup deployment. Misalnya, us-central1.
    • NEW_DEPLOYMENT_ID: ID 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.

Anda dapat membuat grup deployment di masing-masing region (seperti us-central1) atau di multi-region (seperti us). Semua unit deployment dalam grup deployment harus berada di project dan lokasi yang sama dengan grup deployment itu sendiri. Orkestrasi lintas region dalam satu grup deployment tidak didukung.

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 Google Cloud project Anda.
    • LOCATION: Google Cloud lokasi grup deployment. 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 itu.
  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 Google Cloud project Anda.
    • LOCATION: Google Cloud lokasi grup deployment. Contoh, us-central1.
    • DEPLOYMENT_GROUP_ID: ID grup deployment baru.

Menyediakan grup deployment

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

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 Google Cloud project Anda.
    • LOCATION: Google Cloud lokasi grup deployment. 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 Google Cloud project Anda.
    • LOCATION: Google Cloud lokasi grup deployment. Misalnya, us-central1.
    • OPERATION_ID: ID operasi yang ingin Anda 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 oleh 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 Google Cloud project Anda.
    • LOCATION: Google Cloud lokasi grup deployment. 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 Google Cloud project Anda.
    • LOCATION: Google Cloud lokasi grup deployment. Misalnya, us-central1.
    • DEPLOYMENT_GROUP_ID: ID grup deployment yang ingin Anda perbarui.
    • DEPLOYMENT_UNIT_ID_3: ID untuk 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 Google Cloud project Anda.
    • LOCATION: Google Cloud lokasi grup deployment. Misalnya, us-central1.
    • DEPLOYMENT_GROUP_ID: ID grup deployment yang ingin Anda perbarui.
    • DEPLOYMENT_UNIT_ID_3: ID unit deployment pihak 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 tersebut, 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: merepresentasikan ID operasi. Dibuat oleh Infra Manager.
    • REVISION_ID: merepresentasikan ID revisi. Dibuat oleh Infra Manager.

Mencabut penyediaan grup deployment

Batalkan penyediaan grup deployment untuk menghapus semua deployment yang direferensikannya, dan semua deployment yang merupakan bagian dari revisi terakhir yang berhasil (tetapi telah dihapus).

Untuk membatalkan 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 Google Cloud project Anda.
    • LOCATION: Google Cloud lokasi grup deployment. Misalnya, us-central1.
    • DEPLOYMENT_GROUP_ID: ID grup deployment yang ingin Anda batalkan penyediaannya.
  2. Respons yang berhasil menunjukkan bahwa penghapusan 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 membatalkan 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 ada revisi.

    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 Google Cloud project Anda.
    • LOCATION: Google Cloud lokasi grup deployment. Misalnya, us-central1.
    • DEPLOYMENT_GROUP_ID: ID grup deployment yang ingin Anda hapus.

Langkah berikutnya