Un plano 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 en las que se implementa el entorno de ejecución de SaaS 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 subirlas al entorno de ejecución de SaaS.
Para obtener detalles sobre estas configuraciones de Terraform, consulta Planos en el entorno de ejecución de SaaS.
Antes de comenzar
- Asegúrate de haber habilitado el entorno de ejecución de SaaS.
- En el proyecto que usas para el entorno de ejecución de SaaS, 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 el entorno de ejecución de SaaS.
- Identifica las configuraciones de Terraform que deseas implementar con el entorno de ejecución de SaaS.
- Para obtener detalles sobre cómo decidir cómo modelar la oferta de SaaS con planos, consulta Determina el modelo de la oferta de SaaS
- Para obtener detalles sobre los requisitos de la configuración de Terraform, consulta Requisitos del plano.
Crea y sube el plano
Para implementar las configuraciones de Terraform en el entorno de ejecución de SaaS, debes hacer lo siguiente: Google Cloud
- Empaqueta las configuraciones 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 plano, puedes realizar todos los pasos de forma manual o el entorno de ejecución de SaaS puede realizar 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. El entorno de ejecución de SaaS 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. El entorno de ejecución de SaaS usa los archivos para crear la imagen de OCI requerida. Luego, el entorno de ejecución de SaaS usa Cloud Build para compilar y subir el plano 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. La automatización de este proceso te ayuda a incorporar el entorno de ejecución de SaaS 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 al entorno de ejecución de SaaS cuando creas un lanzamiento o un tipo de unidad. El entorno de ejecución de SaaS usa el archivo ZIP para crear la imagen de OCI requerida.
Para proporcionar un plano con un archivo ZIP, haz lo siguiente:
- Navega al directorio de tu proyecto de Terraform.
- Crea un archivo ZIP que contenga la configuración de Terraform.
- Asegúrate de lo siguiente:
- El archivo ZIP contiene solo tus archivos de Terraform. Por ejemplo,
main.tf,variables.tf,outputs.tf,versions.tfy módulos. - El archivo ZIP no contiene archivos innecesarios, por ejemplo, directorios
.gito un Dockerfile.
- El archivo ZIP contiene solo tus archivos de Terraform. Por ejemplo,
- El comando para crear un archivo ZIP puede ser similar al siguiente:
zip terraform-files.zip main.tf outputs.tf variables.tf versions.tf
- Asegúrate de lo siguiente:
- Sube el archivo ZIP cuando crees un lanzamiento o cuando crees un tipo de unidad.
El entorno de ejecución de SaaS 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 el entorno de ejecución de SaaS a este repositorio. El entorno de ejecución de SaaS usa los archivos para crear la imagen de OCI requerida cuando creas un tipo de unidad o un lanzamiento.
Para proporcionar un plano con un repositorio de Git, haz lo siguiente:
- Asegúrate de que tus archivos de Terraform se encuentren en el directorio raíz de tu repositorio de Git.
- Conecta tu repositorio de Git al entorno de ejecución de SaaS cuando crees un lanzamiento o cuando crees un tipo de unidad.
El entorno de ejecución de SaaS usa Developer Connect para conectarse al repositorio de Git. Para obtener más detalles sobre Developer Connect, consulta la documentación de Developer Connect.
El entorno de ejecución de SaaS 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, el entorno de ejecución de SaaS usa los archivos modificados para compilar automáticamente una imagen de OCI nueva 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 plano de forma manual, sigue estos pasos:
En el directorio raíz de tus archivos de Terraform, crea un archivo llamado
Dockerfilecon el siguiente contenido:# syntax=docker/dockerfile:1-labs FROM scratch COPY --exclude=Dockerfile --exclude=.git --exclude=.gitignore . /Este
Dockerfileusa una imagen base mínima (scratch). Considera incluirdockerignoreen el comando para excluir archivos que no sean relevantes, como los siguientes:- el
Dockerfileen sí - el directorio
.git - el archivo
.gitignore
- el
Si no tienes un compilador de Docker, crea un compilador
docker-containercondocker buildxmediante el siguiente comando:docker buildx create --name container --driver=docker-containerEjecuta el siguiente comando
docker buildx builddesde tu directorio de Terraform para compilar y enviar el plano 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 proyectoREPOSITORY_NAME: El nombre de tu repositorio de Artifact RegistryIMAGE_NAME: Un nombre para la imagen de tu planoTAG: Una etiqueta para la versión de tu imagen (por ejemplo,latestov1.0.0). Elegir una etiqueta descriptiva te ayuda a administrar de manera eficaz las versiones del plano.TERRAFORM_VERSION: La versión compatible de Terraform que se usará Consulta Versiones compatibles de Terraform 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 de OCI está en el repositorio de Artifact Registry.
Para usar esta imagen con el entorno de ejecución de SaaS, selecciónala cuando la crees un lanzamiento, o cuando crees un tipo de unidad.
Automatiza la creación de planos
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 se envíe automáticamente a Artifact Registry.
Para configurar esta automatización, haz lo siguiente:
En la raíz de tu repositorio de Terraform, crea un archivo
cloudbuild.yamlcon 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_ONLYReemplaza lo siguiente:
PROJECT_ID: ID del proyectoCLOUD_BUILD_SERVICE_ACCOUNT: El nombre completo de tu cuenta de servicio de Cloud Build Para obtener más detalles sobre el entorno de ejecución de SaaS y las cuentas de servicio, consulta Cuentas de servicio del entorno de ejecución de SaaSREPOSITORY_NAME: El nombre de tu repositorio de Artifact RegistryIMAGE_NAME: Un nombre para la imagen de tu planoTAG: Una etiqueta para la versión de tu imagen (por ejemplo,latestov1.0.0). Elegir una etiqueta descriptiva te ayuda a administrar de manera eficaz las versiones del plano.TERRAFORM_VERSION: La versión compatible de Terraform que se usará Consulta Versiones compatibles de Terraform para obtener la lista de versiones compatibles con Infrastructure Manager.
Inicia el trabajo de Cloud Build con el comando
gcloud builds submitdesde el directorio que contiene tu archivocloudbuild.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 proyectoREPOSITORY_NAME: El nombre de tu repositorio de Artifact RegistryIMAGE_NAME: Un nombre para la imagen de tu planoTAG: Una etiqueta para la versión de tu imagen (por ejemplo,latestov1.0.0). Elegir una etiqueta descriptiva te ayuda a administrar de manera eficaz las versiones del plano.
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 de OCI ahora está en el repositorio de Artifact Registry.
Para usar esta imagen con el entorno de ejecución de SaaS, selecciónala cuando la crees un lanzamiento, o cuando crees un tipo de unidad.
¿Qué sigue?
- Para obtener más información sobre el entorno de ejecución de SaaS, consulta Descripción general del entorno de ejecución de SaaS.
- Para obtener más información sobre los planos, consulta Planos en el entorno de ejecución de SaaS.
- Para comenzar a usar el entorno de ejecución de SaaS, comienza con Crea una oferta de SaaS.