@media screen and (min-width: 580px) { .flotantewhatsapp{ display:none; } }

Compartir por WhatsApp

terraform-crear-contenedores-lxc-en-proxmox-3

Terraform: Crear contenedores LXC en Proxmox

Terraform: Crear contenedores LXC en Proxmox

Hoy vamos a explicar como automatizar despliegues con Terraform y Proxmox, y los diferentes componentes necesarios para poder generar contenedores LXC automáticamente.

En la anterior entrada generé una máquina virtual con Terraform que nos servirá de lanzadera para los despliegues.

Una vez preparado el entorno, tenemos que pasar a configurar los parámetros para poder generar los LXC que necesitemos. La configuración de Terraform va a estar compuesta por estos componentes:

  • Proveedor de Terraform: Es un plugin que nos permite explotar la API de Proxmox y poder interactuar con la infraestructura a través de Terraform. En nuestro caso, para poder crear los contenedores LXC, usaremos TELMATE, del cual os dejo documentación:
  • El proyecto, dispondrá de 3 ficheros claves con la extensión TF de Terraform:
    • providers.tf:
      • En este fichero definiremos la versión del provider y su nombre. Y también la forma de conectar (pasaremos variables que se definen en otro fichero TF)
    • vars.tf:
      • Definimos las diferentes variables, como usuario, password, enlace API…
    • main.tf:
      • Aquí se definen los parámetros de creación específicos para ese contenedor
  • Adicionalmente, y para mejorar la automatización, generaremos un script con la personalización del contenedor LXC y definiremos las claves públicas y privadas

Definir clave pública y privada para LXC

Para que os podáis conectar al container LXC deberéis generar una clave pública y privada (las plantillas vienen por defecto con el acceso de root cortado, por lo que os daría error si intentáis conectaros directamente). Lo podéis hacer vía comando (ssh_keygen) o mediante ya existen páginas que te facilitan la gestión:

terraform-crear-contenedores-lxc-en-proxmox-4

  • Guardaremos los datos de la Public Keys y la Private Keys para los ficheros de configuración:

Definir providers.tf en Terraform

El contenido de este fichero lo podéis modificar según la versión que esté en el momento que leáis esta entrada:

Definir vars.tf en Terraform

El contenido de este fichero deberéis adaptarlo según vuestra insfraestructura:

Si no sabéis donde encontrar la ruta de vuestras imágenes, podéis probar a crear manualmente un contenedor LXC y revisar en el último paso donde se localiza:

terraform-crear-contenedores-lxc-en-proxmox-1

Definir main.tf en Terraform

El contenido de este fichero, como ya hemos comentado, definen los parámetros específicos del contenedor:

Script personalizar LXC en Terraform

Adicionalmente, vamos a generar un script para que una vez generado el contenedor lo personalice con la función que va a desempeñar. Vamos a darle al script en este ejemplo unas funciones básicas, que se actualice una vez arrancada la máquina y que le instale NGINX:

Procedimiento creación LXC Contenedor en Proxmox

Nos vamos al servidor que vamos a usar para lanzar la creación del contenedor LXC en Proxmox mediante Terraform, me conecto SSH:

Comprobamos que tenemos conexión con el host Proxmox desde la máquina:

Genero una carpeta para los proyectos de automatización y dentro de ella unas subcarpetas para este trabajo:

Dentro de dicha carpeta, para este contenedor, genero los ficheros con la siguiente estructura:

Generamos los ficheros con el contenido anterior:

Los comandos que usaremos:

terraform-crear-contenedores-lxc-en-proxmox-3

Lanzamos la validación:

Ejecutamos:

terraform-crear-contenedores-lxc-en-proxmox-2.png

Lanzamos el plan:

Aplicamos: