Los diseños que incluyen configuraciones de Terraform requieren acceso a un entorno de tiempo de ejecución de Terraform que se integra con el producto local de Automation Assembler.

Cómo agregar un tiempo de ejecución de Terraform

El entorno de tiempo de ejecución consta de un clúster de Kubernetes que ejecuta comandos de la CLI de Terraform para realizar las operaciones solicitadas. Además, el tiempo de ejecución recopila registros y devuelve los resultados de los comandos de la CLI de Terraform.

El producto local de VMware Aria Automation requiere que los usuarios configuren su propio clúster de Kubernetes de tiempo de ejecución de Terraform. Solo se admite un tiempo de ejecución de Terraform por organización. Todas las implementaciones de Terraform de esa organización usan el mismo tiempo de ejecución.

Nota:

Para ejecutar comandos y estados de Terraform, se necesita un entorno de tiempo de ejecución de Terraform que se ejecute en K8s. Al crear la integración de Terraform en VMware Aria Automation local, puede elegir entre un k8 administrado (que es un clúster de k8s que ya se administra mediante VMware Aria Automation) o un clúster de k8s externo (que es un clúster de k8s que no está administrado por VMware Aria Automation), y el espacio de nombres en el que se crearán los pods de Terraform. Si utiliza un clúster externo, debe proporcionar acceso a Kubeconfig al clúster de k8s para el destino de tiempo de ejecución de Terraform. Kubeconfig es un estándar de k8s y no necesita ser un Kubeconfig de administrador. Puede utilizar una cuenta de servicio con permisos mínimos; por ejemplo, permiso para ejecutar pods en un espacio de nombres y permiso para generar un Kubeconfig para usarlo con la integración en tiempo de ejecución de Terraform de VMware Aria Automation.

  1. Compruebe que tiene un clúster de Kubernetes donde ejecutar la CLI de Terraform.
    • Todos los usuarios pueden proporcionar un archivo kubeconfig para ejecutar la CLI de Terraform en un clúster de Kubernetes sin administrar.
    • Los usuarios con licencia Enterprise tienen la opción de ejecutar la CLI de Terraform en un clúster de Kubernetes administrado por VMware Aria Automation.

      En Automation Assembler, vaya a Infraestructura > Recursos > Kubernetes y compruebe que tiene un clúster de Kubernetes. Consulte Cómo trabajar con Kubernetes en Automation Assembler si necesita agregar uno.

  2. Si el clúster de Kubernetes se agregó o se modificó recientemente, espere a que se complete la recopilación de datos.

    La recopilación de datos recupera la lista de espacios de nombres y otra información, y puede tardar hasta 5 minutos en función del proveedor.

  3. Una vez completada la recopilación de datos, vaya a Infraestructura > Conexiones > Integraciones > Agregar integración y seleccione la tarjeta Tiempo de ejecución de Terraform.
  4. Introduzca la configuración.
    Figura 1. Ejemplo de integración en tiempo de ejecución de Terraform
    Ejemplo de integración en tiempo de ejecución de Terraform para usuarios con licencia Advanced
    Ajuste Descripción
    Nombre Asigne un nombre único a la integración en tiempo de ejecución.
    Descripción Explica para qué sirve la integración.
    Integración en tiempo de ejecución de Terraform:
    Tipo de tiempo de ejecución (solo para Enterprise) Los usuarios con licencia Enterprise pueden seleccionar si desean ejecutar la CLI de Terraform en un clúster de Kubernetes administrado por VMware Aria Automation o un clúster sin administrar.
    Archivo kubeconfig de Kubernetes (todos los usuarios)

    Para un clúster de Kubernetes sin administrar, pegue todo el contenido del archivo kubeconfig correspondiente al clúster externo.

    Para usar un tiempo de ejecución de Kubernetes externo con un servidor proxy, consulte Cómo agregar compatibilidad con un proxy.

    Esta opción está disponible para todos los usuarios.

    Clúster de Kubernetes (solo Enterprise)

    Para una instancia de Kubernetes administrada por VMware Aria Automation, seleccione el clúster en el que se ejecutará la CLI de Terraform.

    Se debe poder acceder al clúster y al archivo kubeconfig. Puede validar el acceso a kubeconfig con GET en /cmx/api/resources/k8s/clusters/{clusterId}/kube-config.

    Esta opción solo está disponible para licencias Enterprise.

    Espacio de nombres de Kubernetes Seleccione el espacio de nombres que se utilizará en el clúster para crear pods que ejecuten la CLI de Terraform.
    Configuración de contenedor de tiempo de ejecución:
    Imagen Introduzca la ruta de acceso a la imagen del contenedor de la versión de Terraform que desea ejecutar.
    Nota: El botón VALIDAR no comprueba la imagen del contenedor.
    Solicitud de CPU Introduzca la cantidad de CPU para los contenedores en ejecución. El valor predeterminado es 250 millicores.
    Límite de CPU Introduzca la CPU máxima permitida para los contenedores en ejecución. El valor predeterminado es 250 millicores.
    Solicitud de memoria Introduzca la cantidad de memoria para los contenedores en ejecución. El valor predeterminado es 512 MB.
    Límite de memoria Introduzca la memoria máxima permitida para los contenedores en ejecución. El valor predeterminado es 512 MB.
  5. Haga clic en VALIDAR y ajuste la configuración según sea necesario.
  6. Haga clic en ADD.

La configuración se almacena en caché. Después de agregar la integración, puede modificar la configuración, como el clúster o el espacio de nombres, pero puede tardar hasta 5 minutos para que se detecte un cambio y para que la CLI de Terraform se ejecute con la nueva configuración.

Solucionar problemas del tiempo de ejecución de Terraform

Algunos problemas de implementación de la configuración de Terraform pueden estar relacionados con la integración en tiempo de ejecución.

Problema Causa Resolución
Se produce un error en la validación y se indica que el espacio de nombres no es válido. Se modificó el clúster, pero se dejó el espacio de nombres anterior en la interfaz de usuario. Siempre vuelva a seleccionar un espacio de nombres después de modificar la selección del clúster.
El menú desplegable del espacio de nombres está vacío o no muestra los espacios de nombres recién agregados. No se completó la recopilación de datos para el clúster. La recopilación de datos tarda hasta 5 minutos después de introducir o modificar el clúster, y hasta 10 minutos al introducir o modificar el espacio de nombres. Para un nuevo clúster con espacios de nombres existentes, espere 5 minutos para que se complete la recopilación de datos.

Para un nuevo espacio de nombres en un clúster existente, espere hasta 10 minutos para que se complete la recopilación de datos.

Si el problema persiste, elimine el clúster y vuelva a agregarlo en Infraestructura > Recursos > Kubernetes.

Los contenedores de la CLI de Terraform se crean en un clúster anterior, un espacio de nombres anterior o con una configuración de tiempo de ejecución anterior, incluso después de actualizar la cuenta de integración. El cliente de API de Kubernetes que utiliza VMware Aria Automation se almacena en caché durante 5 minutos. Es posible que los cambios necesiten hasta 5 minutos en surtir efecto.
Se produce un error en la validación o en una operación de implementación de Terraform que indica que kubeconfig no está disponible. En ocasiones, estos errores se producen debido a que no se puede acceder al clúster desde VMware Aria Automation.

En otros casos, las credenciales de usuario, los tokens o los certificados no son válidos.

El error de kubeconfig puede producirse por varios motivos y es posible que requiera una interacción con soporte técnico para solución de problemas.

Cómo agregar compatibilidad con un proxy

Para que el clúster de tiempo de ejecución de Kubernetes externo se conecte a través de un servidor proxy, siga estos pasos.

  1. Inicie sesión en el servidor de clústeres de Kubernetes externo.
  2. Cree una carpeta vacía.
  3. En la nueva carpeta, agregue las siguientes líneas a un nuevo archivo llamado Dockerfile.
    FROM projects.registry.vmware.com/vra/terraform:latest as final
    ENV https_proxy=protocol://username:password@proxy_host:proxy_port
    ENV http_proxy=protocol://username:password@proxy_host:proxy_port
    ENV no_proxy=.local,.localdomain,localhost
  4. Modifique los valores de marcador de posición para que las variables de entorno https_proxy y http_proxy incluyan la configuración del servidor proxy que se utiliza para acceder a Internet.

    El protocolo será http o https según lo que utilice el servidor proxy, lo que podría no coincidir con el nombre de la variable de entorno https_proxy o http_proxy.

  5. Guarde y cierre Dockerfile.
  6. En la carpeta vacía, ejecute el siguiente comando. Según los privilegios de su cuenta, es posible que deba ejecutar el comando en modo sudo.

    docker build --file Dockerfile --tag custom-terraform-runtime:1.0 .

    El comando crea una imagen de Docker custom-terraform-runtime:1.0 local.

  7. En Automation Assembler, en Infraestructura > Conexiones > Integraciones, vaya a la integración en tiempo de ejecución de Terraform.
  8. Cree o edite la configuración del contenedor en tiempo de ejecución para utilizar la imagen custom-terraform-runtime:1.0:
    Imagen del proxy de tiempo de ejecución de Terraform