Gérer les groupes de déploiement

Ce guide vous explique comment créer, gérer et supprimer des groupes de déploiement.

Un groupe de déploiement est un ensemble de déploiements organisés dans un graphique acyclique orienté. Utilisez des groupes de déploiement pour gérer les déploiements associés en tant que ressource logique unique. Vous pouvez appliquer les déploiements dans l'ordre topologique ou les supprimer dans l'ordre topologique inverse.

Avant de commencer

  1. Assurez-vous qu'Infra Manager est activé, et que la Google Cloud CLI est installée et initialisée.
  2. Assurez-vous de disposer du rôle d'administrateur de configuration (roles/config.admin) d'Identity and Access Management.
  3. Assurez-vous que votre projet comporte un déploiement existant ou créez-en un. Pour créer un déploiement de test afin de créer des groupes de déploiement, exécutez la commande suivante :

    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
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre Google Cloud projet.
    • LOCATION : emplacement du déploiement que vous devez créer pour créer un groupe de déploiement. Google Cloud Par exemple, us-central1.
    • NEW_DEPLOYMENT_ID : ID d'un déploiement. Vous avez besoin d'un déploiement existant pour créer un groupe de déploiement. Remplacez EXISTING_DEPLOYMENT_ID par NEW_DEPLOYMENT_ID dans les sections suivantes.
    • SERVICE_ACCOUNT : ID du compte de service que vous utilisez pour créer le déploiement.

Créer un groupe de déploiement

Un groupe de déploiement est un ensemble de déploiements qu'Infra Manager gère en tant qu'unité logique unique.

Lorsque vous créez un groupe de déploiement, chaque déploiement que vous ajoutez au groupe est une unité de déploiement.

Pour créer un groupe de déploiement, utilisez l'API REST comme suit :

  1. Envoyez une requête POST au point de terminaison 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"]
            }
          ]
        }'
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre Google Cloud projet.
    • LOCATION : emplacement du groupe de déploiement. Google Cloud Par exemple, us-central1.
    • DEPLOYMENT_GROUP_ID : ID du groupe de déploiement que vous souhaitez créer.
    • DEPLOYMENT_UNIT_ID_1 : ID de l'unité de déploiement à ajouter au groupe de déploiement.
    • EXISTING_DEPLOYMENT_ID : ID d'un déploiement existant que vous utilisez pour créer une unité de déploiement du groupe de déploiement.
    • DEPLOYMENT_UNIT_ID_2 : ID d'une deuxième unité de déploiement à ajouter au groupe de déploiement. Vous pouvez ajouter des définitions pour chaque unité de déploiement que vous souhaitez ajouter à votre groupe de déploiement.
    • Facultatif : DEPENDENT_UNIT_ID : ID de l'unité de déploiement qui sert de dépendance. Cette dépendance doit être provisionnée avant l'unité définie et déprovisionnée après celle-ci.
  2. Envoyez une requête GET au point de terminaison 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"
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre Google Cloud projet.
    • LOCATION : emplacement du groupe de déploiement. Google Cloud Par exemple, us-central1.
    • DEPLOYMENT_GROUP_ID : ID du nouveau groupe de déploiement.

Provisionner un groupe de déploiement

Pour appliquer les déploiements référencés dans un groupe de déploiement, vous devez provisionner le groupe. Le provisionnement applique les déploiements dans l'ordre défini par la structure deploymentUnits. Si vous devez créer ou mettre à jour un déploiement au cours de ce processus, vous pouvez fournir sa définition dans l'objet deploymentSpecs de votre requête de provisionnement.

Pour provisionner un groupe de déploiement, utilisez l'API REST comme suit :

  1. Envoyez une requête POST au point de terminaison 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
                }
            }
          }
        }'
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre Google Cloud projet.
    • LOCATION : emplacement du groupe de déploiement. Google Cloud Par exemple, us-central1.
    • DEPLOYMENT_GROUP_ID : ID du nouveau groupe de déploiement.
    • DEPLOYMENT_UNIT_ID_2 : ID d'une deuxième unité de déploiement à ajouter au groupe de déploiement. Vous pouvez ajouter des définitions pour chaque unité de déploiement que vous souhaitez ajouter à votre groupe de déploiement.
    • DEPLOYMENT_ID_2 : ID de chaîne de la deuxième unité de déploiement à ajouter au groupe de déploiement.
    • EXISTING_DEPLOYMENT_ID : ID d'un déploiement existant.
    • SERVICE_ACCOUNT : ID de chaîne du compte de service que vous utilisez pour provisionner le groupe de déploiement.
  2. Pour envoyer une requête GET au point de terminaison des opérations, utilisez l'API REST comme suit :

     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"
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre Google Cloud projet.
    • LOCATION : emplacement du groupe de déploiement. Google Cloud Par exemple, us-central1.
    • OPERATION_ID : ID de l'opération que vous souhaitez interroger. Par exemple, operation-1000000000000-64d67ecd2868c-caa044f9-6b48677e
  3. Infra Manager utilise une opération de longue durée (LRO) pour afficher la progression du provisionnement. Une réponse réussie indique que le provisionnement est terminé :

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

    Où :

    • OP_ID : ID de l'opération. Généré par Infra Manager.
    • EXISTING_DEPLOYMENT_ID : ID du déploiement qu' Infra Manager provisionnera avant DEPLOYMENT_UNIT_ID_1.

Lister les révisions d'un groupe de déploiement

Infra Manager crée une révision de groupe de déploiement une fois qu'une opération provision ou deprovision est terminée.

Pour lister les révisions de groupe de déploiement, utilisez l'API REST comme suit :

  1. Envoyez une requête GET au point de terminaison 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"
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre Google Cloud projet.
    • LOCATION : emplacement du groupe de déploiement. Google Cloud Par exemple, us-central1.
    • DEPLOYMENT_GROUP_ID : ID du groupe de déploiement pour lequel vous souhaitez lister les révisions.

Mettre à jour un groupe de déploiement

Pour mettre à jour un groupe de déploiement, modifiez sa définition. Vous pouvez éventuellement provisionner la définition mise à jour dans le groupe de déploiement.

Pour mettre à jour un groupe de déploiement, utilisez l'API REST comme suit :

  1. Envoyez une requête PATCH au point de terminaison 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"
            }
          ]
        }'
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre Google Cloud projet.
    • LOCATION : emplacement du groupe de déploiement. Google Cloud Par exemple, us-central1.
    • DEPLOYMENT_GROUP_ID : ID du groupe de déploiement que vous souhaitez mettre à jour.
    • DEPLOYMENT_UNIT_ID_3 : ID du déploiement à mettre à jour.
  2. Facultatif : provisionnez le groupe de déploiement mis à jour. Envoyez une requête POST au point de terminaison 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
                }
            }
          }
        }'
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre Google Cloud projet.
    • LOCATION : emplacement du groupe de déploiement. Google Cloud Par exemple, us-central1.
    • DEPLOYMENT_GROUP_ID : ID du groupe de déploiement que vous souhaitez mettre à jour.
    • DEPLOYMENT_UNIT_ID_3 : ID d'une troisième unité de déploiement à ajouter au groupe de déploiement.
    • EXISTING_DEPLOYMENT_ID : ID d'un déploiement existant.
    • SERVICE_ACCOUNT : ID de chaîne du compte de service que vous utilisez pour mettre à jour le groupe de déploiement.

    Lorsque vous provisionnez un groupe de déploiement, les modifications basées sur la dernière révision réussie sont appliquées aux déploiements du groupe de déploiement.

    Si vous supprimez un déploiement de la définition du groupe de déploiement, puis que vous le provisionnez, le déploiement supprimé sera supprimé avec ses ressources.

  3. Une réponse réussie indique que le provisionnement est terminé.

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

    Où :

    • OP_ID : ID de l'opération. Généré par Infra Manager.
    • REVISION_ID : ID de la révision. Généré par Infra Manager.

Déprovisionner un groupe de déploiement

Déprovisionnez un groupe de déploiement pour supprimer tous les déploiements référencés et tous les déploiements qui faisaient partie de la dernière révision réussie (mais qui ont été supprimés depuis).

Pour déprovisionner un groupe de déploiement, utilisez l'API REST comme suit :

  1. Envoyez une requête POST au point de terminaison 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
        }'
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre Google Cloud projet.
    • LOCATION : emplacement du groupe de déploiement. Google Cloud Par exemple, us-central1.
    • DEPLOYMENT_GROUP_ID : ID du groupe de déploiement que vous souhaitez déprovisionner.
  2. Une réponse réussie indique que le déprovisionnement est terminé.

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

Supprimer un groupe de déploiement

Une fois que vous avez déprovisionné un groupe de déploiement, ses métadonnées sont conservées. Pour supprimer les métadonnées, vous devez supprimer le groupe de déploiement.

Pour supprimer un groupe de déploiement, utilisez l'API REST comme suit :

  1. Envoyez une requête DELETE au point de terminaison deploymentGroups. Définissez force sur true si des révisions existent.

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

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre Google Cloud projet.
    • LOCATION : emplacement du groupe de déploiement. Google Cloud Par exemple, us-central1.
    • DEPLOYMENT_GROUP_ID : ID du groupe de déploiement que vous souhaitez supprimer.

Étape suivante