Los usuarios de Cloud Assembly que necesitan diseñar y ejecutar integraciones de Terraform mientras están desconectados de Internet pueden configurar su entorno de tiempo de ejecución siguiendo este ejemplo.
Este proceso da por sentado que usted tiene su propio registro de Docker y puede acceder a sus repositorios sin una conexión a Internet.
Crear la imagen de contenedor personalizada
- Cree una imagen de contenedor personalizada que incluya los archivos binarios del complemento del proveedor Terraform.
El siguiente Dockerfile muestra un ejemplo de creación de una imagen personalizada con el proveedor de GCP de Terraform.
La descarga de la imagen base de
projects.registry.vmware.com/vra/terraform:latest
en Dockerfile requiere acceso a Internet para ir al registro de VMware Harbor en projects.registry.vmware.com.La configuración del firewall o del proxy puede provocar un error en la compilación de la imagen. Es posible que necesite habilitar el acceso a releases.hashicorp.com para descargar los archivos binarios del complemento del proveedor de Terraform. Sin embargo, puede utilizar el registro privado para proporcionar los archivos binarios del complemento como una opción.
FROM projects.registry.vmware.com/vra/terraform:latest as final # Create provider plug-in directory ARG plugins=/tmp/terraform.d/plugin-cache/linux_amd64 RUN mkdir -m 777 -p $plugins # Download and unzip all required provider plug-ins from hashicorp to provider directory RUN cd $plugins \ && wget -q https://releases.hashicorp.com/terraform-provider-google/3.58.0/terraform-provider-google_3.58.0_linux_amd64.zip \ && unzip *.zip \ && rm *.zip # For "terraform init" configure terraform CLI to use provider plug-in directory and not download from internet ENV TF_CLI_ARGS_init="-plugin-dir=$plugins -get-plugins=false"
- Cree, etiquete e inserte la imagen de contenedor personalizada en su propio repositorio de Docker en su sitio desconectado.
- En Cloud Assembly en su sitio desconectado, en , vaya a la integración en tiempo de ejecución de Terraform.
- Cree o edite la configuración del contenedor en tiempo de ejecución para agregar el repositorio para la imagen de contenedor personalizada. El nombre de ejemplo de la imagen del contenedor personalizada que se creó es
registry.ourcompany.com/project1/image1:latest
.
Alojar la CLI de Terraform localmente
- Descargue los archivos binarios de la CLI de Terraform.
- Cargue los archivos binarios de la CLI de Terraform en el servidor web local o FTP.
- En Cloud Assembly, vaya a .
- Cree o edite la versión de Terraform para que incluya la URL de los archivos binarios de la CLI de Terraform alojados en el servidor local.
- Si el servidor web local o FTP requieren autenticación de inicio de sesión, seleccione Autenticación básica e introduzca las credenciales de nombre de usuario y contraseña que permiten el acceso a esos servidores.
Para cambiar el tipo de autenticación, debe tener la función de administrador de nube en Cloud Assembly.
Diseñar e implementar configuraciones de Terraform
Con el tiempo de ejecución establecido, puede agregar archivos de configuración de Terraform a Git, diseñar plantillas de nube para ellos e implementarlos.
Para comenzar, consulte Preparar la configuración de Terraform en Cloud Assembly.
Solución de problemas
Para implementar, abra la implementación en Cloud Assembly. En la pestaña Historial, busque eventos de Terraform y haga clic en Mostrar logs a la derecha. Cuando el proveedor de Terraform local está funcionando, aparecen los siguientes mensajes en el log.
Initializing provider plugins
Terraform has been successfully initialized
Para un log más robusto, puede editar manualmente el código de la plantilla de nube para agregar TF_LOG: DEBUG
como se muestra en el siguiente ejemplo.
resources: terraform: type: Cloud.Terraform.Configuration properties: providers: - name: google # List of available cloud zones: gcp/us-west1 cloudZone: gcp/us-west1 environment: # Configure terraform CLI debug log settings TF_LOG: DEBUG terraformVersion: 0.12.29 configurationSource: repositoryId: fc569ef7-f013-4489-9673-6909a2791071 commitId: 3e00279a843a6711f7857929144164ef399c7421 sourceDirectory: gcp-simple
Crear su propia imagen base
Aunque VMware actualiza ocasionalmente la imagen base en projects.registry.vmware.com/vra/terraform:latest
, esa imagen puede estar desactualizada y contener vulnerabilidades.
Para crear su propia imagen base, utilice el siguiente Dockerfile en su lugar.
FROM alpine:latest as final RUN apk add --no-cache git wget curl openssh