Automatiza la implementación de recursos de Google Cloud
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
En esta página, se describe el proceso para configurar activadores de Cloud Build
para automatizar las implementaciones de Google Cloud recursos con tus
repositorios existentes y el Administrador de infraestructura.
Asegúrate de tener los permisos de IAM necesarios para crear implementaciones:
roles/config.admin
Asegúrate de tener una cuenta de servicio con los permisos necesarios. Para obtener más información, consulta Configura la cuenta de servicio.
Identifica el repositorio de Git existente que tiene la configuración de Terraform.
Cuando configures la automatización que se describe en esta página, esta es la configuración de Terraform que usa Infra Manager para actualizar los recursos.
Opción recomendada: Configura la protección de ramas para tu repositorio de Git.
Automatiza la implementación de Google Cloud recursos
En los siguientes pasos, se describe la configuración necesaria para automatizar la vista previa y
la implementación de una configuración de Terraform almacenada en un repositorio de Git. Una implementación de una configuración de Terraform puede ser una revisión de una implementación existente.
Las revisiones pueden borrar o reemplazar los recursos Google Cloud aprovisionados.
Cuando se completa la configuración, una solicitud de extracción en el repositorio de Git hace que
Infra Manager cree una vista previa de la implementación. Cuando se combina una solicitud de extracción, Infra Manager implementa automáticamente la configuración de Terraform.
El módulo im_cloudbuild_workspace crea varios recursos, incluidos los siguientes:
Una conexión de repositorio de Cloud Build
Un activador de Cloud Build que se invoca cuando se crea una solicitud de extracción.
Este activador hace que Infra Manager cree una implementación preliminar con la configuración de Terraform en el repositorio.
Un activador de Cloud Build que se invoca cuando se combina una solicitud de extracción con el
repositorio de Git Este activador hace que Infra Manager cree o
actualice la implementación con la configuración de Terraform en el repositorio.
Para automatizar las implementaciones de configuración de Terraform cuando se actualiza el repositorio, haz lo siguiente:
Asegúrate de configurar tu token para que no tenga fecha de vencimiento y selecciona los
siguientes permisos cuando se te solicite en GitHub: repo y read:user. Si tu app está instalada en una organización, asegúrate de seleccionar también el permiso read:org.
Después de generar tu token de acceso personal, guárdalo en un lugar seguro. Usarás el token generado en los siguientes pasos.
Copia el módulo im_cloudbuild_workspace en el archivo main.tf dentro de tu repositorio de Git:
PROJECT_ID: Es el ID del proyecto en el que se ejecuta el Administrador de infraestructura.
DEPLOYMENT_ID: Es el identificador de implementación que especifiques. Consulta
Nombre de la implementación
para obtener detalles sobre las restricciones del identificador de implementación.
GIT_REPO: Es el URI del repositorio de Git.
REF: La referencia de Git de la configuración. La referencia es opcional. Si no especificas la referencia, se usa la rama configurada predeterminada del repositorio de GitHub.
GIT_APP_ID: Es el ID de instalación de la app de GitHub de Cloud Build que se usa para los activadores de solicitudes de extracción y envío.
TOKEN: Es un token de acceso personal para un repositorio de GitHub.
Si se proporciona, crea un secreto en Secret Manager.
Crea una implementación (o actualiza la existente) con el módulo im_cloudbuild_workspace:
DEPLOYMENT_ID: Es el identificador de implementación que especifiques. Consulta
Nombre de la implementación
para obtener detalles sobre las restricciones del identificador de implementación.
SERVICE_ACCOUNT: Es el nombre de la cuenta de servicio que
usas para llamar a Infra Manager.
SERVICE_ACCOUNT_PROJECT_ID es el ID del proyecto de la cuenta de servicio. Es común que este sea el mismo proyecto en el que se ejecuta el Administrador de infraestructura.
GIT_REPO: El repositorio público de Git.
DIRECTORY: Es el directorio que tiene la configuración de Terraform.
REF: La referencia de Git de la configuración. La referencia es opcional. Si no especificas la referencia, se usa la rama configurada predeterminada del repositorio de GitHub.
Ahora que se configuró esta automatización, los activadores de Cloud Build hacen lo siguiente:
Cuando se realiza una solicitud de extracción en el repositorio, Infra Manager crea una implementación de vista previa con la configuración de Terraform bifurcada almacenada en el repositorio de Git.
Cuando se une una solicitud de extracción al repositorio, Infra Manager actualiza la implementación con la configuración de Terraform bifurcada almacenada en el repositorio de Git.
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Información o código de muestra incorrectos","incorrectInformationOrSampleCode","thumb-down"],["Faltan la información o los ejemplos que necesito","missingTheInformationSamplesINeed","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2025-09-05 (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)."]]