Gérer les groupes de déploiement

Ce guide vous aide à comprendre 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 graphe orienté acyclique. 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 que Infra Manager est activé et que la Google Cloud CLI est installée et initialisée.
  2. Assurez-vous de disposer du rôle Administrateur de configuration (roles/config.admin) Identity and Access Management.
  3. Assurez-vous que votre projet dispose d'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 projet Google Cloud .
    • LOCATION : emplacement du déploiement Google Cloud que vous devez créer pour créer un groupe de déploiement. 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éploiements est un ensemble de déploiements qu'Infra Manager gère comme une seule unité logique.

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

Vous pouvez créer des groupes de déploiement dans des régions individuelles (comme us-central1) ou dans des régions multiples (comme us). Toutes les unités de déploiement d'un groupe de déploiement doivent résider dans le même projet et au même emplacement que le groupe de déploiement lui-même. L'orchestration interrégionale au sein d'un même groupe de déploiement n'est pas acceptée.

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 projet Google Cloud .
    • LOCATION : Google Cloud emplacement du groupe de déploiement. 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.
  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 projet Google Cloud .
    • LOCATION : Google Cloud emplacement du groupe de déploiement. Exemple : us-central1.
    • DEPLOYMENT_GROUP_ID : ID du nouveau groupe de déploiements.

Provisionner un groupe de déploiement

Pour appliquer les déploiements référencés dans un groupe de déploiements, 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 demande 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 projet Google Cloud .
    • LOCATION : Google Cloud emplacement du groupe de déploiement. 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 projet Google Cloud .
    • LOCATION : Google Cloud emplacement du groupe de déploiement. 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 du groupe de déploiement une fois qu'une opération provision ou deprovision est terminée.

Pour lister les révisions d'un 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 projet Google Cloud .
    • LOCATION : Google Cloud emplacement du groupe de déploiement. 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 projet Google Cloud .
    • LOCATION : Google Cloud emplacement du groupe de déploiement. 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 projet Google Cloud .
    • LOCATION : Google Cloud emplacement du groupe de déploiement. 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 unité de déploiement tierce à 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 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 : représente l'ID de l'opération. Généré par Infra Manager.
    • REVISION_ID : représente l'ID de révision. Généré par Infra Manager.

Déprovisionner un groupe de déploiement

Désapprovisionnez 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 supprimer le provisionnement d'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 projet Google Cloud .
    • LOCATION : Google Cloud emplacement du groupe de déploiement. Par exemple, us-central1.
    • DEPLOYMENT_GROUP_ID : ID du groupe de déploiement que vous souhaitez désactiver.
  2. Une réponse réussie indique que le désapprovisionnement 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

Après avoir supprimé 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 projet Google Cloud .
    • LOCATION : Google Cloud emplacement du groupe de déploiement. Par exemple, us-central1.
    • DEPLOYMENT_GROUP_ID : ID du groupe de déploiement que vous souhaitez supprimer.

Étapes suivantes