Gestire i gruppi di deployment

Questa guida ti aiuta a capire come creare, gestire ed eliminare i gruppi di deployment.

Un gruppo di deployment è una raccolta di deployment disposti in un grafo aciclico orientato. Utilizza i gruppi di deployment per gestire i deployment correlati come una singola risorsa logica. Puoi applicare i deployment in ordine topologico o eliminarli in ordine topologico inverso.

Prima di iniziare

  1. Assicurati che Infra Manager sia abilitato e che Google Cloud CLI sia installato e inizializzato.
  2. Assicurati di disporre del ruolo Identity and Access Management Config Admin (roles/config.admin).
  3. Assicurati che il progetto abbia un deployment esistente o creane uno. Per creare un deployment di test per la creazione di gruppi di deployment, esegui questo comando:

    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
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto.
    • LOCATION: la Google Cloud posizione del deployment che devi creare per formare un gruppo di deployment. Ad esempio: us-central1.
    • NEW_DEPLOYMENT_ID: l'ID di un deployment. Per creare un gruppo di deployment, devi disporre di un deployment esistente. Sostituisci EXISTING_DEPLOYMENT_ID con NEW_DEPLOYMENT_ID nelle seguenti sezioni.
    • SERVICE_ACCOUNT: l'ID del account di servizio che utilizzi per creare il deployment.

Crea un gruppo di deployment

Un gruppo di deployment è una raccolta di deployment che Infra Manager gestisce come una singola unità logica.

Quando crei un gruppo di deployment, ogni deployment che aggiungi al gruppo è un'unità di deployment.

Per creare un gruppo di deployment, utilizza l'API REST come segue:

  1. Invia una richiesta POST all'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"]
            }
          ]
        }'
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto.
    • LOCATION: la Google Cloud posizione del gruppo di deployment. Ad esempio: us-central1.
    • DEPLOYMENT_GROUP_ID: l'ID del gruppo di deployment che vuoi creare.
    • DEPLOYMENT_UNIT_ID_1: l'ID dell'unità di deployment da aggiungere al gruppo di deployment.
    • EXISTING_DEPLOYMENT_ID: l'ID di un deployment esistente che utilizzi per creare un'unità di deployment del gruppo di deployment.
    • DEPLOYMENT_UNIT_ID_2: l'ID di una seconda unità di deployment da aggiungere al gruppo di deployment. Puoi aggiungere definizioni per ogni unità di deployment che vuoi aggiungere al gruppo di deployment.
    • (Facoltativo) DEPENDENT_UNIT_ID: l'ID dell'unità di implementazione che funge da dipendenza. Questa dipendenza deve essere sottoposta a provisioning prima dell'unità definita e deprovisioning dopo.
  2. Invia una richiesta GET all'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"
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto.
    • LOCATION: la Google Cloud posizione del gruppo di deployment. Ad esempio, us-central1.
    • DEPLOYMENT_GROUP_ID: l'ID del nuovo gruppo di deployment.

Esegui il provisioning di un gruppo di deployment

Per applicare i deployment a cui viene fatto riferimento in un gruppo di deployment, devi eseguire il provisioning del gruppo. Il provisioning applica i deployment nell'ordine definito dalla struttura di deploymentUnits. Se devi creare o aggiornare un deployment durante questa procedura, puoi fornire la relativa definizione nell'oggetto deploymentSpecs della richiesta di provisioning.

Per eseguire il provisioning di un gruppo di deployment, utilizza l'API REST come segue:

  1. Invia una richiesta POST all'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
                }
            }
          }
        }'
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto.
    • LOCATION: la Google Cloud posizione del gruppo di deployment. Ad esempio: us-central1.
    • DEPLOYMENT_GROUP_ID: l'ID del nuovo gruppo di deployment.
    • DEPLOYMENT_UNIT_ID_2: l'ID di una seconda unità di deployment da aggiungere al gruppo di deployment. Puoi aggiungere definizioni per ogni unità di deployment che vuoi aggiungere al gruppo di deployment.
    • DEPLOYMENT_ID_2: l'ID stringa della seconda unità di deployment da aggiungere al gruppo di deployment.
    • EXISTING_DEPLOYMENT_ID: l'ID di un deployment esistente.
    • SERVICE_ACCOUNT: l'ID stringa del account di servizio che utilizzi per eseguire il provisioning del gruppo di deployment.
  2. Per inviare una richiesta GET all'endpoint delle operazioni, utilizza l'API REST nel seguente modo:

     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"
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto.
    • LOCATION: la Google Cloud posizione del gruppo di deployment. Ad esempio: us-central1.
    • OPERATION_ID: l'ID operazione che vuoi interrogare. Ad esempio, operation-1000000000000-64d67ecd2868c-caa044f9-6b48677e
  3. Infra Manager utilizza un'operazione a lunga esecuzione (LRO) per mostrare l'avanzamento del provisioning. Una risposta corretta indica che il provisioning è stato completato:

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

    Dove:

    • OP_ID: l'ID operazione. Generato da Infra Manager.
    • EXISTING_DEPLOYMENT_ID: l'ID del deployment che Infra Manager eseguirà il provisioning prima di DEPLOYMENT_UNIT_ID_1.

Elenca le revisioni di un gruppo di deployment

Infra Manager crea una revisione del gruppo di deployment al termine di un'operazione provision o deprovision.

Per elencare le revisioni del gruppo di deployment, utilizza l'API REST come segue:

  1. Invia una richiesta GET all'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"
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto.
    • LOCATION: la Google Cloud posizione del gruppo di deployment. Ad esempio: us-central1.
    • DEPLOYMENT_GROUP_ID: l'ID del gruppo di deployment per cui vuoi elencare le revisioni.

Aggiorna un gruppo di deployment

Per aggiornare un gruppo di deployment, modifica la definizione del gruppo di deployment. Se vuoi, puoi eseguire il provisioning della definizione aggiornata nel gruppo di deployment.

Per aggiornare un gruppo di deployment, utilizza l'API REST come segue:

  1. Invia una richiesta PATCH all'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"
            }
          ]
        }'
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto.
    • LOCATION: la Google Cloud posizione del gruppo di deployment. Ad esempio: us-central1.
    • DEPLOYMENT_GROUP_ID: l'ID del gruppo di deployment che vuoi aggiornare.
    • DEPLOYMENT_UNIT_ID_3: l'ID del deployment da aggiornare.
  2. (Facoltativo) Esegui il provisioning del gruppo di deployment aggiornato. Invia una richiesta POST all'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
                }
            }
          }
        }'
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto.
    • LOCATION: la Google Cloud posizione del gruppo di deployment. Ad esempio: us-central1.
    • DEPLOYMENT_GROUP_ID: l'ID del gruppo di deployment che vuoi aggiornare.
    • DEPLOYMENT_UNIT_ID_3: l'ID di una terza unità di deployment da aggiungere al gruppo di deployment.
    • EXISTING_DEPLOYMENT_ID: l'ID di un deployment esistente.
    • SERVICE_ACCOUNT: l'ID stringa del account di servizio che utilizzi per aggiornare il gruppo di deployment.

    Quando esegui il provisioning di un gruppo di deployment, le modifiche basate sull'ultima revisione riuscita vengono applicate ai deployment all'interno del gruppo di deployment.

    Se rimuovi un deployment dalla definizione del gruppo di deployment e poi esegui il provisioning, il deployment rimosso verrà eliminato insieme alle relative risorse.

  3. Una risposta positiva indica che il provisioning è stato completato.

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

    Dove:

    • OP_ID: rappresenta l'ID operazione. Generato da Infra Manager.
    • REVISION_ID: rappresenta l'ID revisione. Generato da Infra Manager.

Eseguire il deprovisioning di un gruppo di deployment

Esegui il deprovisioning di un gruppo di deployment per eliminare tutti i deployment a cui fa riferimento e tutti i deployment che facevano parte dell'ultima revisione riuscita (ma che sono stati eliminati).

Per eseguire il deprovisioning di un gruppo di deployment, utilizza l'API REST come segue:

  1. Invia una richiesta POST all'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
        }'
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto.
    • LOCATION: la Google Cloud posizione del gruppo di deployment. Ad esempio: us-central1.
    • DEPLOYMENT_GROUP_ID: l'ID del gruppo di deployment di cui vuoi eseguire il deprovisioning.
  2. Una risposta positiva indica che il deprovisioning è stato completato.

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

Eliminare un gruppo di deployment

Dopo aver deprovisionato un gruppo di deployment, i relativi metadati rimangono. Per rimuovere i metadati, devi eliminare il gruppo di deployment.

Per eliminare un gruppo di deployment, utilizza l'API REST come segue:

  1. Invia una richiesta DELETE all'endpoint deploymentGroups. Imposta force su true se esistono revisioni.

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

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto.
    • LOCATION: la Google Cloud posizione del gruppo di deployment. Ad esempio: us-central1.
    • DEPLOYMENT_GROUP_ID: l'ID del gruppo di deployment che vuoi eliminare.

Passaggi successivi