Gerenciar grupos de implantação

Este guia ajuda você a entender como criar, gerenciar e excluir grupos de implantação.

Um grupo de implantação é uma coleção de implantações organizadas em um gráfico acíclico direcionado. Use grupos de implantação para gerenciar implantações relacionadas como um único recurso lógico. É possível aplicar implantações em ordem topológica ou excluí-las em ordem topológica inversa.

Antes de começar

  1. Confirme se o Infra Manager está ativado, e se a Google Cloud CLI está instalada e inicializada.
  2. Confirme se você tem o papel de administrador de configuração (roles/config.admin) do Identity and Access Management.
  3. Confirme se o projeto tem uma implantação ou crie uma. Para criar uma implantação de teste para criar grupos de implantação, execute o seguinte 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
    

    Substitua:

    • PROJECT_ID: o ID doprojeto. Google Cloud
    • LOCATION: a Google Cloud localização da implantação que você precisa criar para formar um grupo de implantação. Por exemplo, us-central1.
    • NEW_DEPLOYMENT_ID: o ID de uma implantação. Você precisa de uma implantação para criar um grupo de implantação. Substitua EXISTING_DEPLOYMENT_ID por NEW_DEPLOYMENT_ID nas seções a seguir.
    • SERVICE_ACCOUNT: o ID da conta de serviço que você está usando para criar a implantação.

Criar um grupo de implantação

Um grupo de implantação é uma coleção de implantações que o Infra Manager gerencia como uma única unidade lógica.

Ao criar um grupo de implantação, cada implantação adicionada ao grupo é uma unidade de implantação.

Para criar um grupo de implantação, use a API REST da seguinte maneira:

  1. Envie uma solicitação POST para o 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"]
            }
          ]
        }'
    

    Substitua:

    • PROJECT_ID: o ID doprojeto. Google Cloud
    • LOCATION: a Google Cloud localização do grupo de implantação. Por exemplo, us-central1.
    • DEPLOYMENT_GROUP_ID: o ID do grupo de implantação que você quer criar.
    • DEPLOYMENT_UNIT_ID_1: o ID da unidade de implantação a ser adicionada ao grupo de implantação.
    • EXISTING_DEPLOYMENT_ID: o ID de uma implantação existente que você usa para criar uma unidade de implantação do grupo de implantação.
    • DEPLOYMENT_UNIT_ID_2: o ID de uma segunda unidade de implantação a ser adicionada ao grupo de implantação. É possível adicionar definições para cada unidade de implantação que você quer adicionar ao grupo de implantação.
    • Opcional: DEPENDENT_UNIT_ID: o ID da unidade de implantação que serve como dependência. Essa dependência precisa ser provisionada antes da unidade definida e desprovisionada depois dela.
  2. Envie uma solicitação GET para o 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"
    

    Substitua:

    • PROJECT_ID: o ID doprojeto. Google Cloud
    • LOCATION: a Google Cloud localização do grupo de implantação. Por exemplo, us-central1.
    • DEPLOYMENT_GROUP_ID: o ID do novo grupo de implantação.

Provisionar um grupo de implantação

Para aplicar as implantações referenciadas em um grupo de implantação, é necessário provisionar o grupo. O provisionamento aplica as implantações na ordem definida pela estrutura deploymentUnits. Se você precisar criar ou atualizar uma implantação durante esse processo, poderá fornecer a definição dela no objeto deploymentSpecs da solicitação de provisionamento.

Para provisionar um grupo de implantação, use a API REST da seguinte maneira:

  1. Envie uma solicitação POST para o 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
                }
            }
          }
        }'
    

    Substitua:

    • PROJECT_ID: o ID doprojeto. Google Cloud
    • LOCATION: a Google Cloud localização do grupo de implantação. Por exemplo, us-central1.
    • DEPLOYMENT_GROUP_ID: o ID do novo grupo de implantação.
    • DEPLOYMENT_UNIT_ID_2: o ID de uma segunda unidade de implantação a ser adicionada ao grupo de implantação. É possível adicionar definições para cada unidade de implantação que você quer adicionar ao grupo de implantação.
    • DEPLOYMENT_ID_2: o ID de string da segunda unidade de implantação a ser adicionada ao grupo de implantação.
    • EXISTING_DEPLOYMENT_ID: o ID de uma implantação.
    • SERVICE_ACCOUNT: o ID de string da conta de serviço que você está usando para provisionar o grupo de implantação.
  2. Para enviar uma solicitação GET ao endpoint de operações, use a API REST da seguinte maneira:

     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"
    

    Substitua:

    • PROJECT_ID: o ID doprojeto. Google Cloud
    • LOCATION: a Google Cloud localização do grupo de implantação. Por exemplo, us-central1.
    • OPERATION_ID: o ID da operação que você quer consultar. Por exemplo, operation-1000000000000-64d67ecd2868c-caa044f9-6b48677e
  3. O Infra Manager usa uma operação de longa duração (LRO, na sigla em inglês) para mostrar o progresso do provisionamento. Uma resposta bem-sucedida indica que o provisionamento foi concluído:

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

    Em que:

    • OP_ID: o ID da operação. Gerado pelo Infra Manager.
    • EXISTING_DEPLOYMENT_ID: o ID da implantação que o Infra Manager vai provisionar antes de DEPLOYMENT_UNIT_ID_1.

Listar revisões de um grupo de implantação

O Infra Manager cria uma revisão do grupo de implantação após a conclusão de uma operação provision ou deprovision.

Para listar revisões do grupo de implantação, use a API REST da seguinte maneira:

  1. Envie uma solicitação GET para o 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"
    

    Substitua:

    • PROJECT_ID: o ID doprojeto. Google Cloud
    • LOCATION: a Google Cloud localização do grupo de implantação. Por exemplo, us-central1.
    • DEPLOYMENT_GROUP_ID: o ID do grupo de implantação para o qual você quer listar revisões.

Atualizar um grupo de implantação

Para atualizar um grupo de implantação, mude a definição dele. Opcionalmente, provisione a definição atualizada para o grupo de implantação.

Para atualizar um grupo de implantação, use a API REST da seguinte maneira:

  1. Envie uma solicitação PATCH para o 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"
            }
          ]
        }'
    

    Substitua:

    • PROJECT_ID: o ID doprojeto. Google Cloud
    • LOCATION: a Google Cloud localização do grupo de implantação. Por exemplo, us-central1.
    • DEPLOYMENT_GROUP_ID: o ID do grupo de implantação que você quer atualizar.
    • DEPLOYMENT_UNIT_ID_3: o ID da implantação a ser atualizada.
  2. Opcional: provisione o grupo de implantação atualizado. Envie uma solicitação POST para o 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
                }
            }
          }
        }'
    

    Substitua:

    • PROJECT_ID: o ID doprojeto. Google Cloud
    • LOCATION: a Google Cloud localização do grupo de implantação. Por exemplo, us-central1.
    • DEPLOYMENT_GROUP_ID: o ID do grupo de implantação que você quer atualizar.
    • DEPLOYMENT_UNIT_ID_3: o ID de uma terceira unidade de implantação a ser adicionada ao grupo de implantação.
    • EXISTING_DEPLOYMENT_ID: o ID de uma implantação existente.
    • SERVICE_ACCOUNT: o ID de string da conta de serviço que você está usando para atualizar o grupo de implantação.

    Ao provisionar um grupo de implantação, as mudanças com base na última revisão bem-sucedida são aplicadas às implantações dentro do grupo de implantação.

    Se você remover uma implantação da definição do grupo de implantação e provisionar, a implantação removida será excluída junto com os recursos.

  3. Uma resposta bem-sucedida indica que o provisionamento foi concluído.

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

    Em que:

    • OP_ID: representa o ID da operação. Gerado pelo Infra Manager.
    • REVISION_ID: representa o ID da revisão. Gerado pelo Infra Manager.

Desprovisionar um grupo de implantação

Desprovisione um grupo de implantação para excluir todas as implantações referenciadas e as implantações que faziam parte da última revisão bem-sucedida (mas foram excluídas desde então).

Para desprovisionar um grupo de implantação, use a API REST da seguinte maneira:

  1. Envie uma solicitação POST para o 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
        }'
    

    Substitua:

    • PROJECT_ID: o ID doprojeto. Google Cloud
    • LOCATION: a Google Cloud localização do grupo de implantação. Por exemplo, us-central1.
    • DEPLOYMENT_GROUP_ID: o ID do grupo de implantação que você quer desprovisionar.
  2. Uma resposta bem-sucedida indica que o desprovisionamento foi concluído.

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

Excluir um grupo de implantação

Depois de desprovisionar um grupo de implantação, os metadados dele permanecem. Para remover os metadados, é necessário excluir o grupo de implantação.

Para excluir um grupo de implantação, use a API REST da seguinte maneira:

  1. Envie uma solicitação DELETE para o endpoint deploymentGroups. Defina force como true se houver revisões.

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

    Substitua:

    • PROJECT_ID: o ID doprojeto. Google Cloud
    • LOCATION: a Google Cloud localização do grupo de implantação. Por exemplo, us-central1.
    • DEPLOYMENT_GROUP_ID: o ID do grupo de implantação que você quer excluir.

A seguir