本指南說明如何建立、管理及刪除部署群組。
部署群組是依有向非循環圖排列的部署項目集合。您可以使用部署群組,以單一邏輯資源的形式管理相關部署作業。您可以依拓撲順序套用部署作業,或依反向拓撲順序刪除部署作業。
事前準備
- 確認已啟用 Infra Manager,並安裝及初始化 Google Cloud CLI。
- 確認您具備「Config Admin」 (
roles/config.admin) 身分與存取權管理角色。 確認專案已有部署作業,或建立部署作業。如要建立測試部署作業來建立部署群組,請執行下列指令:
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:專案的 ID。 Google Cloud
- LOCATION:您需要建立部署作業的位置,才能建立部署作業群組。 Google Cloud 例如:
us-central1。 - NEW_DEPLOYMENT_ID:部署作業的 ID。您必須先有現有部署作業,才能建立部署群組。
將下列章節中的
EXISTING_DEPLOYMENT_ID替換為NEW_DEPLOYMENT_ID。 - SERVICE_ACCOUNT:用於建立部署作業的服務帳戶 ID。
建立部署作業群組
部署群組是 Infra Manager 做為單一邏輯單元管理的部署集合。
建立部署群組時,您加入群組的每個部署作業都是部署單元。
如要建立部署群組,請使用 REST API,如下所示:
將
POST要求傳送至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"] } ] }'更改下列內容:
- PROJECT_ID:專案的 ID。 Google Cloud
- LOCATION:部署群組的 Google Cloud 位置。例如:
us-central1。 - DEPLOYMENT_GROUP_ID:要建立的部署群組 ID。
- DEPLOYMENT_UNIT_ID_1:要新增至部署群組的部署單元 ID。
- EXISTING_DEPLOYMENT_ID:現有部署作業的 ID,您會使用這個 ID 建立部署作業群組的部署作業單元。
- DEPLOYMENT_UNIT_ID_2:要新增至部署群組的第二個部署單元 ID。您可以為要新增至部署群組的每個部署單元新增定義。
- 選用:DEPENDENT_UNIT_ID:做為依附元件的部署單元 ID。這個依附元件必須在定義單元之前佈建,並在定義單元之後取消佈建。
將
GET要求傳送至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"更改下列內容:
- PROJECT_ID:專案的 ID。 Google Cloud
- LOCATION:部署群組的 Google Cloud 位置。例如:
us-central1。 - DEPLOYMENT_GROUP_ID:新部署群組的 ID。
佈建部署作業群組
如要套用部署群組中參照的部署項目,您必須佈建該群組。佈建作業會按照 deploymentUnits 結構定義的順序套用部署作業。如果您需要在這個程序中建立或更新部署作業,可以在佈建要求的 deploymentSpecs 物件中提供定義。
如要佈建部署群組,請使用 REST API,如下所示:
將
POST要求傳送至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 } } } }'更改下列內容:
- PROJECT_ID:專案的 ID。 Google Cloud
- LOCATION:部署群組的 Google Cloud 位置。例如:
us-central1。 - DEPLOYMENT_GROUP_ID:新部署群組的 ID。
- DEPLOYMENT_UNIT_ID_2:要新增至部署群組的第二個部署單元 ID。您可以為要新增至部署群組的每個部署單元新增定義。
- DEPLOYMENT_ID_2:要新增至部署群組的第二個部署單元字串 ID。
- EXISTING_DEPLOYMENT_ID:現有部署作業的 ID。
- SERVICE_ACCOUNT:用於佈建部署群組的服務帳戶字串 ID。
如要向作業端點傳送
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:專案的 ID。 Google Cloud
- LOCATION:部署群組的 Google Cloud 位置。例如:
us-central1。 - OPERATION_ID:要查詢的作業 ID。例如:
operation-1000000000000-64d67ecd2868c-caa044f9-6b48677e
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。
列出部署項目群組的修訂版本
provision或 deprovision 作業完成後,Infra Manager 會建立部署群組修訂版本。
如要列出部署群組修訂版本,請使用下列 REST API:
將
GET要求傳送至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"更改下列內容:
- PROJECT_ID:專案的 ID。 Google Cloud
- LOCATION:部署群組的 Google Cloud 位置。例如:
us-central1。 - DEPLOYMENT_GROUP_ID:要列出修訂版本的部署群組 ID。
更新部署項目群組
如要更新部署項目群組,請變更部署項目群組定義。 您可以選擇將更新後的定義佈建至部署群組。
如要更新部署群組,請使用 REST API,如下所示:
將
PATCH要求傳送至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" } ] }'更改下列內容:
- PROJECT_ID:專案的 ID。 Google Cloud
- LOCATION:部署群組的 Google Cloud 位置。例如:
us-central1。 - DEPLOYMENT_GROUP_ID:要更新的部署群組 ID。
- DEPLOYMENT_UNIT_ID_3:要更新的部署作業 ID。
選用:佈建更新後的部署項目群組。 將
POST要求傳送至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 } } } }'更改下列內容:
- PROJECT_ID:專案的 ID。 Google Cloud
- LOCATION:部署群組的 Google Cloud 位置。例如:
us-central1。 - DEPLOYMENT_GROUP_ID:要更新的部署群組 ID。
- DEPLOYMENT_UNIT_ID_3:要新增至部署群組的第三方部署單元 ID。
- EXISTING_DEPLOYMENT_ID:現有部署作業的 ID。
- SERVICE_ACCOUNT:用於更新部署群組的服務帳戶字串 ID。
佈建部署群組時,系統會根據上次成功修訂版本的內容,對部署群組內的部署作業套用變更。
如果您從部署群組定義中移除部署,然後進行佈建,系統會一併刪除移除的部署及其資源。
成功的回應表示佈建完成。
{ "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,如下所示:
將
POST要求傳送至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 }'更改下列內容:
- PROJECT_ID:專案的 ID。 Google Cloud
- LOCATION:部署群組的 Google Cloud 位置。例如:
us-central1。 - DEPLOYMENT_GROUP_ID:要取消佈建的部署群組 ID。
成功的回應表示取消佈建完成。
{ "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,如下所示:
將
DELETE要求傳送至deploymentGroups端點。如有修訂版本,請將force設為true。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:專案的 ID。 Google Cloud
- LOCATION:部署群組的 Google Cloud 位置。例如:
us-central1。 - DEPLOYMENT_GROUP_ID:要刪除的部署作業群組 ID。
後續步驟
- 進一步瞭解 Infra Manager。
- 請參閱 Infrastructure Manager API 參考資料。