Automatizar el despliegue de recursos de Google Cloud

En esta página se describe el proceso para configurar activadores de Cloud Build para automatizar los despliegues de recursos de Google Cloud con tus repositorios e 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 empezar

  1. Comprueba que Infra Manager esté habilitado.
  2. Comprueba que tienes los permisos de gestión de identidades y accesos necesarios para crear implementaciones:
    • roles/config.admin
  3. Asegúrate de que tienes una cuenta de servicio con los permisos necesarios. Para obtener más información, consulta Configurar la cuenta de servicio.
  4. Identifica el repositorio de Git que tiene la configuración de Terraform. Cuando configures la automatización que se describe en esta página, esta será la configuración de Terraform que Infra Manager usará para actualizar los recursos.
  5. Recomendación: configura la protección de ramas en tu repositorio de Git.

Automatizar el despliegue de recursos Google Cloud

En los pasos siguientes 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. El despliegue de una configuración de Terraform puede ser una revisión de un despliegue ya creado. Las revisiones pueden eliminar o sustituir recursos aprovisionados. Google Cloud

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, entre los que se incluyen 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 de vista previa con la configuración de Terraform del 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 mediante la configuración de Terraform del repositorio.

Para automatizar las implementaciones de configuración de Terraform cuando se actualice el repositorio, sigue estos pasos:

  1. Instala la aplicación de GitHub para 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 que tu token no tenga fecha de vencimiento y selecciona los siguientes permisos cuando se te pida en GitHub: repo y read:user. Si tu aplicación 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 pasos siguientes.

  3. Copia el módulo im_cloudbuild_workspace en el archivo main.tf 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"
    }
    

    Sustituye:

    • PROJECT_ID: el ID del proyecto en el que se ejecuta Infrastructure Manager.
    • DEPLOYMENT_ID: el identificador de implementación que especifiques. Consulta Nombre de la implementación para obtener información detallada sobre las restricciones del identificador de la implementación.
    • GIT_REPO: 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 usará la rama predeterminada configurada del repositorio de Git.
    • GIT_APP_ID: ID de instalación de la aplicación de GitHub para Cloud Build que se usa para los activadores de solicitudes de extracción e inserción.
    • TOKEN: token de acceso personal de un repositorio de GitHub. Si se proporciona, crea un secreto en Secret Manager.
  4. Crea un despliegue (o actualiza el que ya tengas) 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
    

    Sustituye:

    • PROJECT_ID: el ID del proyecto en el que se ejecuta Infrastructure Manager.
    • LOCATION: la ubicación en la que se ejecuta Infra Manager. Consulta la lista de ubicaciones de Infrastructure Manager.
    • DEPLOYMENT_ID: el identificador de implementación que especifiques. Consulta Nombre de la implementación para obtener información detallada sobre las restricciones del identificador de la implementación.
    • SERVICE_ACCOUNT: el nombre de la cuenta de servicio que usas para llamar a Infra Manager.
    • SERVICE_ACCOUNT_PROJECT_ID es el ID de proyecto de la cuenta de servicio. Es habitual que sea el mismo proyecto en el que se ejecuta Infrastructure Manager.
    • GIT_REPO: el repositorio de Git público.
    • DIRECTORY: 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 usará la rama predeterminada configurada del repositorio de Git.
  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 incorporación de cambios en GitHub.

Ahora que se ha configurado esta automatización, los activadores de Cloud Build hacen lo siguiente:

  • Cuando se hace una solicitud de extracción al 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 combina una solicitud de extracción en el repositorio, Infra Manager actualiza el despliegue mediante la configuración de Terraform bifurcada almacenada en el repositorio de Git.

Siguientes pasos