Automatiza la implementación de recursos de Google Cloud

En esta página, se describe el proceso para configurar activadores de Cloud Build para automatizar las implementaciones de recursos de Google Cloud con tus repositorios existentes y Infrastructure Manager.

Una vez que Infra Manager se conecte a tu repositorio de Git, las solicitudes de extracción invocarán una vista previa de una implementación, y las confirmaciones invocarán la creación de una vista previa de la implementación o la actualización de la implementación.

Antes de comenzar

  1. Asegúrate de que Infra Manager esté habilitado.
  2. Asegúrate de tener los permisos de IAM necesarios para crear implementaciones:
    • roles/config.admin
  3. Asegúrate de tener una cuenta de servicio con los permisos necesarios. Para obtener más información, consulta Configura la cuenta de servicio.
  4. Identifica el repositorio de Git existente que tiene la configuración de Terraform. Cuando configuras 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.
  5. Opción recomendada: Configura la protección de ramas para tu repositorio de Git.

Automatizar la implementación de recursos de Google Cloud

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 de 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:

  1. Instala la app de GitHub de Cloud Build en tu cuenta de GitHub o en una organización de tu propiedad.
  2. Crea un token de acceso personal.

    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.

  3. Copia el módulo im_cloudbuild_workspace en el archivo main.tf dentro de tu repositorio de Git:

    module "im-workspace" {
     source = "terraform-google-modules/bootstrap/google//modules/im_cloudbuild_workspace"
     version = "~> 7.0"
    
     project_id = PROJECT_ID
     deployment_id = DEPLOYMENT_ID
     im_deployment_repo_uri = GIT_REPO
     im_deployment_ref = REF
    
     github_app_installation_id = GIT_APP_ID
     github_personal_access_token = TOKEN
    }
    

    Reemplaza lo siguiente:

    • 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.
  4. Crea una implementación (o actualiza la existente) con el módulo im_cloudbuild_workspace:

    gcloud infra-manager deployments apply projects/PROJECT_ID/locations/LOCATION/deployments/DEPLOYMENT_ID \ 
       --service-account projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT \
       --git-source-repo=GIT_REPO \
       --git-source-directory=DIRECTORY \
       --git-source-ref=REF
    

    Reemplaza lo siguiente:

    • PROJECT_ID: Es el ID del proyecto en el que se ejecuta el Administrador de infraestructura.
    • LOCATION: Es la ubicación en la que se ejecuta Infra Manager. Consulta Ubicaciones de Infrastructure Manager para ver la lista de ubicaciones.
    • 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.
  5. Para confirmar que tu repositorio de Git esté conectado correctamente con Infra Manager, crea una solicitud de extracción en tu repositorio.

    Para ver los resultados de la validación de la configuración de Terraform bifurcada, consulta la solicitud de extracción en 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.

¿Qué sigue?