Automatizar a implantação de recursos de Google Cloud
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
Esta página descreve o processo de configuração de gatilhos do Cloud Build
para automatizar implantações de recursos do Google Cloud usando seus
repositórios e o Gerenciador de infraestrutura.
Verifique se você tem as permissões do IAM necessárias para criar implantações:
roles/config.admin
Verifique se você tem uma conta de serviço com as permissões necessárias. Para mais detalhes,
consulte Configurar a conta de serviço.
Identifique o repositório Git que tem a configuração do Terraform.
Quando você configura a automação descrita nesta página, essa é a configuração do Terraform
que o Infra Manager usa para atualizar recursos.
Automatizar a implantação de Google Cloud recursos
As etapas a seguir descrevem a configuração necessária para automatizar a visualização e
a implantação de uma configuração do Terraform armazenada em um repositório do Git. Uma implantação
de uma configuração do Terraform pode ser uma revisão de uma implantação existente.
As revisões podem excluir ou substituir recursos Google Cloud provisionados.
Quando a configuração for concluída, uma solicitação de envio no repositório do Git vai fazer com que
o Infra Manager crie uma prévia da implantação. Quando uma solicitação de pull é
fundida, o Infra Manager implanta automaticamente a configuração do Terraform.
O módulo im_cloudbuild_workspace cria vários recursos, incluindo:
Uma conexão de repositório do Cloud Build.
Um acionador do Cloud Build que é invocado quando uma solicitação de envio é criada.
Esse gatilho faz com que o Infra Manager crie uma implantação de pré-lançamento
usando a configuração do Terraform no repositório.
Um acionador do Cloud Build que é invocado quando uma solicitação de envio é mesclada com o
repositório Git. Esse gatilho faz com que o Infra Manager crie ou
atualize a implantação usando a configuração do Terraform no repositório.
Para automatizar as implantações de configuração do Terraform quando o repositório é
atualizado:
Defina seu token para não ter data de validade e selecione as
seguintes permissões quando solicitado no GitHub: repo e read:user. Se
o app estiver instalado em uma organização, selecione também a
permissão read:org.
Depois de gerar o token de acesso pessoal, salve-o em
um local seguro. Use o token gerado nas etapas a seguir.
Copie o módulo im_cloudbuild_workspace para o arquivo main.tf no
repositório do Git:
PROJECT_ID: o ID do projeto em que o Gerenciador de infraestrutura é executado.
DEPLOYMENT_ID: o identificador de implantação que você
especifica. Consulte Nome da implantação para saber mais sobre as restrições no identificador de implantação.
GIT_REPO: o URI do repositório Git.
REF: a referência do Git da configuração. A referência é
opcional. Se você não especificar a referência, a ramificação
configurada padrão do repositório do Git será usada.
GIT_APP_ID: ID de instalação do app GitHub do Cloud Build usado
para gatilhos de solicitação de pull e push.
TOKEN: token de acesso pessoal para um repositório do GitHub.
Se fornecido, cria um secret no Secret Manager.
Crie uma implantação (ou atualize a atual) com o
módulo im_cloudbuild_workspace:
DEPLOYMENT_ID: o identificador de implantação que você
especifica. Consulte Nome da implantação para saber mais sobre as restrições no identificador de implantação.
SERVICE_ACCOUNT: o nome da conta de serviço usada para chamar o Infra Manager.
SERVICE_ACCOUNT_PROJECT_ID é o ID do projeto da conta de serviço. É comum que esse seja o mesmo projeto em que o Gerenciador de infraestrutura é executado.
GIT_REPO: o repositório Git público.
DIRECTORY: o diretório que tem a configuração do Terraform.
REF: a referência do Git da configuração. A referência é
opcional. Se você não especificar a referência, a ramificação
configurada padrão do repositório do Git será usada.
Agora que essa automação está configurada, os gatilhos do Cloud Build causam o
seguinte:
Quando uma solicitação de envio é feita para o repositório, o Infra Manager cria
uma prévia de implantação usando a configuração do Terraform bifurcada armazenada no
repositório do Git.
Quando uma solicitação de envio é mesclada no repositório, o Infra Manager atualiza a implantação usando a configuração do Terraform bifurcada armazenada no repositório do Git.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Informações incorretas ou exemplo de código","incorrectInformationOrSampleCode","thumb-down"],["Não contém as informações/amostras de que eu preciso","missingTheInformationSamplesINeed","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-08-19 UTC."],[[["\u003cp\u003eThis page details how to automate Google Cloud resource deployments using Cloud Build triggers, your Git repositories, and Infrastructure Manager.\u003c/p\u003e\n"],["\u003cp\u003eSetting up this automation allows Infrastructure Manager to create deployment previews on pull requests and update deployments upon pull request merges.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eim_cloudbuild_workspace\u003c/code\u003e module is used to create a Cloud Build repository connection and the necessary triggers for pull requests and merges.\u003c/p\u003e\n"],["\u003cp\u003ePrerequisites include enabling Infrastructure Manager, ensuring proper IAM permissions and a suitable service account, and identifying the Git repository with Terraform configurations.\u003c/p\u003e\n"],["\u003cp\u003eInstalling the Cloud Build GitHub App and creating a personal access token are necessary steps to link your Git repository with Infra Manager for automated deployments.\u003c/p\u003e\n"]]],[],null,["# Automate the deployment of Google Cloud resources\n\nThis page describes the process to set up [Cloud Build triggers](/build/docs/triggers)\nto automate deployments of Google Cloud resources using your\nexisting repositories and Infrastructure Manager.\n\nOnce Infra Manager connects to your Git repository, pull requests\ninvoke a preview of a deployment, and commits invoke [creating a\ndeployment preview](/infrastructure-manager/docs/preview-deployment) or [updating the deployment](/infrastructure-manager/docs/update-deployment).\n\nBefore you begin\n----------------\n\n1. Ensure [Infra Manager is enabled](/infrastructure-manager/docs/enable-service).\n2. Ensure that you have the IAM permissions needed to create deployments:\n - `roles/config.admin`\n3. Ensure you have a service account with the needed permissions. For details, see [Configure the service account](/infrastructure-manager/docs/configure-service-account).\n4. Identify the existing Git repository that has the Terraform configuration. When you set up the automation described on this page, this is the Terraform configuration that Infra Manager uses to update resources.\n5. Recommended: Set up [branch protection](/docs/terraform/resource-management/managing-infrastructure-as-code#enforcing_cloud_build_execution_success_before_merging_branches) for your Git repository.\n\nAutomate the deployment of Google Cloud resources\n-------------------------------------------------\n\n| **Caution:** Infra Manager does not perform data migration or ensure service continuity. For example, if a revision deletes or replaces a database, it is your responsibility to manage data migration. Creating a revision can cause unrecoverable data loss. Re-applying the previous revision will not restore the data.\n\nThe following steps describe the setup required to automate the preview and\ndeployment of a Terraform configuration stored in a Git repository. A deployment\nof a Terraform configuration can be a revision to an existing deployment.\nRevisions might delete or replace provisioned Google Cloud resources.\n\nWhen the setup is complete, a pull request in the Git repository causes\nInfra Manager to create a preview of the deployment. When a pull request is\nmerged, then Infra Manager automatically deploys the Terraform configuration.\n\nThe `im_cloudbuild_workspace` module creates several resources, including:\n\n- A Cloud Build repository connection.\n- A Cloud Build trigger that is invoked when a pull request is created. This trigger causes Infra Manager to create a preview deployment using the Terraform configuration in the repository.\n- A Cloud Build trigger that is invoked when a pull request is merged with the Git repository. This trigger causes Infra Manager to create or update the deployment using the Terraform configuration in the repository.\n\n| **Note:** For more information about how you can modify the `im_cloudbuild_workspace` module's behavior, see the [`README`](https://github.com/terraform-google-modules/terraform-google-bootstrap/tree/master/modules/im_cloudbuild_workspace).\n\nTo automate Terraform configuration deployments when the repository is\nupdated:\n\n1. Install the [Cloud Build GitHub App](https://github.com/apps/google-cloud-build) on your GitHub account or in an organization you own.\n2. [Create a personal access token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token).\n\n Make sure to set your token to have no expiration date and select the\n following permissions when prompted in GitHub: `repo` and `read:user`. If\n your app is installed in an organization, make sure to also select the\n `read:org` permission.\n\n After you generate your personal access token, save your generated token in\n a secure place. You use the generated token in the following steps.\n | **Note:** If you have an authentication token stored in a secret from a previously created connection, you can use that same secret for the new connection.\n3. Copy the `im_cloudbuild_workspace` module into the `main.tf` file within\n your Git repository:\n\n module \"im-workspace\" {\n source = \"terraform-google-modules/bootstrap/google//modules/im_cloudbuild_workspace\"\n version = \"~\u003e 7.0\"\n\n project_id = \"\u003cvar translate=\"no\"\u003ePROJECT_ID\u003c/var\u003e\"\n deployment_id = \"\u003cvar translate=\"no\"\u003eDEPLOYMENT_ID\u003c/var\u003e\"\n im_deployment_repo_uri = \"\u003cvar translate=\"no\"\u003eGIT_REPO\u003c/var\u003e\"\n im_deployment_ref = \"\u003cvar translate=\"no\"\u003eREF\u003c/var\u003e\"\n\n github_app_installation_id = \"\u003cvar translate=\"no\"\u003eGIT_APP_ID\u003c/var\u003e\"\n github_personal_access_token = \"\u003cvar translate=\"no\"\u003eTOKEN\u003c/var\u003e\"\n }\n\n Replace:\n - \u003cvar translate=\"no\"\u003ePROJECT_ID\u003c/var\u003e: the project ID where Infrastructure Manager runs.\n - \u003cvar translate=\"no\"\u003eDEPLOYMENT_ID\u003c/var\u003e: the deployment identifier that you specify. See [Deployment name](/infrastructure-manager/docs/deployments-revisions#deployment_name) for details about constraints on the deployment identifier.\n - \u003cvar translate=\"no\"\u003eGIT_REPO\u003c/var\u003e: the URI of the Git repository.\n - \u003cvar translate=\"no\"\u003eREF\u003c/var\u003e: the Git reference of the configuration. The reference is optional. If you don't specify the reference, the Git repository's default configured branch is used.\n - \u003cvar translate=\"no\"\u003eGIT_APP_ID\u003c/var\u003e: Installation ID of the Cloud Build GitHub app used for pull and push request triggers.\n - \u003cvar translate=\"no\"\u003eTOKEN\u003c/var\u003e: Personal access token for a GitHub repository. If provided, creates a secret within Secret Manager.\n4. Create a deployment (or update your existing deployment) with\n the `im_cloudbuild_workspace` module:\n\n gcloud infra-manager deployments apply projects/\u003cvar translate=\"no\"\u003ePROJECT_ID\u003c/var\u003e/locations/\u003cvar translate=\"no\"\u003eLOCATION\u003c/var\u003e/deployments/\u003cvar translate=\"no\"\u003eDEPLOYMENT_ID\u003c/var\u003e \\ \n --service-account projects/\u003cvar translate=\"no\"\u003eSERVICE_ACCOUNT_PROJECT_ID\u003c/var\u003e/serviceAccounts/\u003cvar translate=\"no\"\u003eSERVICE_ACCOUNT\u003c/var\u003e \\\n --git-source-repo=\u003cvar translate=\"no\"\u003eGIT_REPO\u003c/var\u003e \\\n --git-source-directory=\u003cvar translate=\"no\"\u003eDIRECTORY\u003c/var\u003e \\\n --git-source-ref=\u003cvar translate=\"no\"\u003eREF\u003c/var\u003e\n\n Replace:\n - \u003cvar translate=\"no\"\u003ePROJECT_ID\u003c/var\u003e: the project ID where Infrastructure Manager runs.\n - \u003cvar translate=\"no\"\u003eLOCATION\u003c/var\u003e: the location where Infra Manager runs. See [Infrastructure Manager locations](/infrastructure-manager/docs/locations) for the list of locations.\n - \u003cvar translate=\"no\"\u003eDEPLOYMENT_ID\u003c/var\u003e: the deployment identifier that you specify. See [Deployment name](/infrastructure-manager/docs/deployments-revisions#deployment_name) for details about constraints on the deployment identifier.\n - \u003cvar translate=\"no\"\u003eSERVICE_ACCOUNT\u003c/var\u003e: the name of the service account you use to call Infra Manager.\n - \u003cvar translate=\"no\"\u003eSERVICE_ACCOUNT_PROJECT_ID\u003c/var\u003e is the project ID of the service account. It's common for this to be the same project where Infrastructure Manager runs.\n - \u003cvar translate=\"no\"\u003eGIT_REPO\u003c/var\u003e: the public Git repository.\n - \u003cvar translate=\"no\"\u003eDIRECTORY\u003c/var\u003e: the directory that has the Terraform configuration.\n - \u003cvar translate=\"no\"\u003eREF\u003c/var\u003e: the Git reference of the configuration. The reference is optional. If you don't specify the reference, the Git repository's default configured branch is used.\n5. To confirm that your Git repository is connected correctly with\n Infra Manager, [create a pull request on your repository](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request).\n\n To see the results of the validation of the forked Terraform configuration,\n [view the pull request in GitHub](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/commenting-on-a-pull-request#discovering-and-navigating-conversations).\n | **Note:** For more information about how you can modify the `im_cloudbuild_workspace` module's behavior, see the [`README`](https://github.com/terraform-google-modules/terraform-google-bootstrap/tree/master/modules/im_cloudbuild_workspace).\n\nNow that this automation is set up, the Cloud Build triggers cause the\nfollowing:\n\n- When a pull request is made to the repository, Infra Manager creates a preview deployment using the forked Terraform configuration stored in the Git repository.\n- When a pull request is merged into the repository, Infra Manager updates the deployment using the forked Terraform configuration stored in the Git repository.\n\nWhat's next\n-----------\n\n- Use Cloud Build to [view build results for your build triggers](/build/docs/view-build-results-triggers).\n- [View resources deployed](/infrastructure-manager/docs/view-resources) with Infra Manager.\n- Monitor your Google Cloud resources with [Infrastructure Manager audit logging](/infrastructure-manager/docs/audit-logging)."]]