Crea y sube un esquema

Un blueprint es una configuración de Terraform empaquetada como una imagen de Open Container Initiative (OCI). La configuración de Terraform especifica la infraestructura y la aplicación que App Lifecycle Manager implementa en Google Cloud.

En esta página, se describe cómo crear una imagen de OCI a partir de configuraciones de Terraform existentes y cómo subirla a App Lifecycle Manager.

Para obtener detalles sobre estas configuraciones de Terraform, consulta Blueprints in App Lifecycle Manager.

Antes de comenzar

  1. Asegúrate de habilitar App Lifecycle Manager.
  2. En el proyecto que usas para App Lifecycle Manager, asegúrate de tener un repositorio de Artifact Registry configurado en el formato de Docker. Para obtener más detalles, consulta Crea un repositorio para App Lifecycle Manager.
  3. Identifica las configuraciones de Terraform que deseas implementar con App Lifecycle Manager.

Crea y sube el esquema

Para implementar los parámetros de configuración de Terraform en Google Cloud con App Lifecycle Manager, debes hacer lo siguiente:

  • Empaqueta los parámetros de configuración de Terraform en imágenes de OCI. Estas imágenes de OCI se denominan planos.
  • Coloca estas imágenes de OCI en el repositorio de Artifact Registry que identificaste o configuraste.

Según cómo elijas crear y subir el plan, puedes realizar todos los pasos de forma manual o dejar que App Lifecycle Manager realice algunos de ellos.

Puedes crear la imagen de OCI y subirla al repositorio con cualquiera de los siguientes métodos:

  • Sube un archivo ZIP que contenga la configuración de Terraform. App Lifecycle Manager usa el archivo ZIP para crear la imagen de OCI.

    Consulta los detalles en la siguiente sección: Sube un archivo ZIP.

  • Conecta un repositorio de Git que tenga los archivos de Terraform. App Lifecycle Manager usa los archivos para crear la imagen de OCI. Luego, App Lifecycle Manager usa Cloud Build para compilar y subir el blueprint cada vez que actualizas tu repositorio.

    Consulta los detalles en la siguiente sección: Conéctate a un repositorio de Git.

  • Compila la imagen de OCI de forma local y envíala al repositorio en Artifact Registry.

    Consulta los detalles en la siguiente sección: Compila y envía una imagen de forma manual.

  • Automatiza la creación y el envío de la imagen de OCI a un repositorio en Artifact Registry. Automatizar este proceso te ayuda a incorporar App Lifecycle Manager en una canalización de CI/CD.

    Consulta los detalles en la siguiente sección: Automatiza la creación de planos.

Sube un archivo ZIP

Puedes crear un archivo ZIP de los archivos de Terraform. Subes este archivo a App Lifecycle Manager cuando creas una versión o un tipo de unidad. App Lifecycle Manager usa el archivo ZIP para crear la imagen de OCI requerida.

Para proporcionar un plano usando un archivo ZIP, haz lo siguiente:

  1. Navega al directorio de tu proyecto de Terraform.
  2. Crea un archivo ZIP que contenga la configuración de Terraform.
    • Asegúrate de que ocurra lo siguiente:
      • El archivo ZIP solo contiene tus archivos de Terraform. Por ejemplo, main.tf, variables.tf, outputs.tf, versions.tf y módulos.
      • El archivo ZIP no contiene archivos innecesarios, por ejemplo, directorios .git o un archivo Dockerfile.
    • El comando para crear un archivo ZIP podría ser similar al siguiente: zip terraform-files.zip main.tf outputs.tf variables.tf versions.tf
  3. Sube el archivo ZIP cuando crees una versión o cuando crees un tipo de unidad.

App Lifecycle Manager usa el archivo ZIP para crear la imagen de OCI requerida y la envía al repositorio de Artifact Registry.

Conéctate a un repositorio de Git

Si almacenas tu configuración de Terraform en un repositorio de Git, puedes conectar App Lifecycle Manager a este repositorio. App Lifecycle Manager usa los archivos para crear la imagen de OCI requerida cuando creas un tipo de unidad o una versión.

Para proporcionar un plano usando un repositorio de Git, haz lo siguiente:

  1. Asegúrate de que tus archivos de Terraform estén ubicados en el directorio raíz de tu repositorio de Git.
  2. Conecta tu repositorio de Git a App Lifecycle Manager cuando crees una versión o cuando crees un tipo de unidad.

App Lifecycle Manager usa Developer Connect para conectarse al repositorio de Git. Para obtener más detalles sobre Developer Connect, consulta la documentación de Developer Connect.

App Lifecycle Manager usa los archivos de Terraform del repositorio de Git para crear la imagen de OCI requerida y la envía al repositorio de Artifact Registry.

Esta integración automatiza el proceso de creación de planos cada vez que actualizas tu código de Terraform en tu repositorio. Cuando hay cambios en el repositorio de Git vinculado, App Lifecycle Manager usa los archivos modificados para compilar automáticamente una nueva imagen de OCI y, luego, la envía al repositorio de Artifact Registry.

Compila y envía una imagen de forma manual

Este método te brinda un control detallado sobre el proceso de creación de planos.

Para crear un plan manualmente, sigue estos pasos:

  1. En el directorio raíz de tus archivos de Terraform, crea un archivo llamado Dockerfile con el siguiente contenido:

    # syntax=docker/dockerfile:1-labs
    FROM scratch
    COPY --exclude=Dockerfile --exclude=.git --exclude=.gitignore . /
    

    Este Dockerfile usa una imagen base mínima (scratch). Considera incluir dockerignore en el comando para excluir archivos que no sean relevantes, como los siguientes:

    • el Dockerfile en sí
    • El directorio .git
    • El archivo .gitignore
  2. Si no tienes un compilador de Docker, crea un compilador de docker-container con docker buildx usando el siguiente comando:

    docker buildx create --name container --driver=docker-container
    
  3. Ejecuta el siguiente comando docker buildx build desde tu directorio de Terraform para compilar y enviar el blueprint a Artifact Registry:

    IMAGE_NAME=us-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/IMAGE_NAME:TAG
    ENGINE_TYPE=inframanager
    ENGINE_VERSION=TERRAFORM_VERSION
    
    docker buildx build -t $IMAGE_NAME \
      --builder=container \
      --push \
      --annotation "com.easysaas.engine.type=$ENGINE_TYPE" \
      --annotation "com.easysaas.engine.version=$ENGINE_VERSION" \
      --provenance=false .
    

    Reemplaza lo siguiente:

    • PROJECT_ID: ID del proyecto
    • REPOSITORY_NAME: Es el nombre de tu repositorio de Artifact Registry.
    • IMAGE_NAME: Es un nombre para la imagen del plan.
    • TAG: Es una etiqueta para la versión de tu imagen (por ejemplo, latest o v1.0.0). Elegir una etiqueta descriptiva te ayuda a administrar de manera eficaz las versiones del plan.
    • TERRAFORM_VERSION: Es la versión compatible de Terraform que se usará. Consulta Versiones de Terraform compatibles para obtener la lista de versiones compatibles con Infrastructure Manager.

    Un comando puede ser similar al siguiente ejemplo:

    IMAGE_NAME=us-docker.pkg.dev/saas-docs-testing/blueprints-repo/my-terraform-blueprint:v1.0.0
    ENGINE_TYPE=inframanager
    ENGINE_VERSION=1.5.7
    
    docker buildx build -t $IMAGE_NAME \
      --builder=container \
      --push \
      --annotation "com.easysaas.engine.type=$ENGINE_TYPE" \
      --annotation "com.easysaas.engine.version=$ENGINE_VERSION" \
      --provenance=false .
    

La imagen OCI se encuentra en el repositorio de Artifact Registry.

Para usar esta imagen con App Lifecycle Manager, selecciónala cuando crees una versión o cuando crees un tipo de unidad.

Automatiza la creación de esquemas

Puedes automatizar la creación de la imagen de OCI y el envío a Artifact Registry con Cloud Build. Puedes configurar un activador para que, cada vez que se cambie el código de Terraform, la imagen de OCI se compile y envíe automáticamente a Artifact Registry.

Para configurar esta automatización, haz lo siguiente:

  1. En la raíz de tu repositorio de Terraform, crea un archivo cloudbuild.yaml con la siguiente configuración:

    steps:
    - id: 'Create Dockerfile'
      name: 'bash'
      args: ['-c', 'echo -e "# syntax=docker/dockerfile:1-labs\nFROM scratch\nCOPY --exclude=Dockerfile.Blueprint --exclude=.git --exclude=.gitignore . /" > Dockerfile.Blueprint']
    - id: 'Create docker-container driver'
      name: 'docker'
      args: ['buildx', 'create', '--name', 'container', '--driver=docker-container']
    - id: 'Build and Push docker image'
      name: 'docker'
      args: ['buildx', 'build', '-t', '${_IMAGE_NAME}', '--builder=container', '--push', '--annotation', 'com.easysaas.engine.type=${_ENGINE_TYPE}','--annotation', 'com.easysaas.engine.version=${_ENGINE_VERSION}', '--provenance=false','-f', 'Dockerfile.Blueprint', '.']
    serviceAccount: '${_SERVICE_ACCOUNT}'
    substitutions:
      _SERVICE_ACCOUNT: 'projects/PROJECT_ID/serviceAccounts/CLOUD_BUILD_SERVICE_ACCOUNT'
      _IMAGE_NAME: 'us-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/IMAGE_NAME:latest'
      _ENGINE_TYPE: 'inframanager'
      _ENGINE_VERSION: 'TERRAFORM_VERSION'
    options:
      logging: CLOUD_LOGGING_ONLY
    

    Reemplaza lo siguiente:

    • PROJECT_ID: ID del proyecto
    • CLOUD_BUILD_SERVICE_ACCOUNT: Es el nombre completo de tu cuenta de servicio de Cloud Build. Para obtener más detalles sobre App Lifecycle Manager y las cuentas de servicio, consulta Cuentas de servicio de App Lifecycle Manager.
    • REPOSITORY_NAME: Es el nombre de tu repositorio de Artifact Registry.
    • IMAGE_NAME: Es un nombre para la imagen del plan.
    • TAG: Es una etiqueta para la versión de tu imagen (por ejemplo, latest o v1.0.0). Elegir una etiqueta descriptiva te ayuda a administrar de manera eficaz las versiones del plan.
    • TERRAFORM_VERSION: Es la versión compatible de Terraform que se usará. Consulta Versiones de Terraform compatibles para obtener la lista de versiones compatibles con Infrastructure Manager.
  2. Inicia el trabajo de Cloud Build con el comando gcloud builds submit desde el directorio que contiene tu archivo cloudbuild.yaml:

    gcloud builds submit --config=cloudbuild.yaml --substitutions=_IMAGE_NAME='us-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/IMAGE_NAME:TAG'
    

    Reemplaza lo siguiente:

    • PROJECT_ID: ID del proyecto
    • REPOSITORY_NAME: Es el nombre de tu repositorio de Artifact Registry.
    • IMAGE_NAME: Un nombre para la imagen de tu plano
    • TAG: Es una etiqueta para la versión de tu imagen (por ejemplo, latest o v1.0.0). Elegir una etiqueta descriptiva te ayuda a administrar de manera eficaz las versiones del plan.
  3. Puedes configurar un activador para que, cada vez que se cambie el código de Terraform, la imagen de OCI se compile y se envíe automáticamente a Artifact Registry. Para obtener más información, consulta Crea y administra activadores de compilación.

La imagen OCI ahora se encuentra en el repositorio de Artifact Registry.

Para usar esta imagen con App Lifecycle Manager, selecciónala cuando crees una versión o cuando crees un tipo de unidad.

¿Qué sigue?