Este repositorio automatiza el despliegue de VMs en un clúster Proxmox usando Terraform y plantillas Cloud-Init. Simplifica la configuración de red, almacenamiento y claves SSH, facilitando la creación y gestión de múltiples VMs de forma declarativa y eficiente. Ideal para administrar infraestructuras virtuales. Este repositorio contiene un ejemplo de cómo desplegar máquinas virtuales en Proxmox utilizando Terraform. La configuración está basada en el uso de plantillas del tipo Cloud-Init, lo que permite una mayor flexibilidad en la inicialización de las VMs.
- Proxmox VE con API habilitada.
- Terraform instalado (puede estar en tu máquina local o en un servidor con acceso a Proxmox).
- Plantilla Cloud-Init en Proxmox (ver enlaces abajo para su creación).
-
Clona este repositorio en tu máquina local:
git clone https://github.com/lizzijuliet/https-spacelift.io-blog-terraform-proxmox-provider.git cd https-spacelift.io-blog-terraform-proxmox-provider -
Configura las variables necesarias en el archivo vars.tf. Puedes modificar los valores predeterminados para adaptarlos a tu entorno
-
Ejecuta los siguientes comandos para desplegar las VMs:
terraform init terraform plan terraform apply
Terraform procederá a desplegar las máquinas virtuales en el clúster Proxmox de acuerdo a la configuración especificada.
Es necesario que la plantilla utilizada para clonar las VMs sea del tipo Cloud-Init. Puedes seguir uno de los siguientes enlaces para aprender a crear una plantilla Cloud-Init en Proxmox:
Creación de una plantilla Cloud-Init en Proxmox - Medium Guía paso a paso: Crear una imagen Cloud-Init lista para usar en Proxmox
Para poder interactuar con Proxmox desde Terraform, necesitarás un token de API. Consulta este artículo para aprender a generar un token y configurar las credenciales en Terraform:
Generación de token en Proxmox para uso con Terraform
api_url: URL de la API de Proxmox.token_id: ID del token para autenticar la API de Proxmox.token_secret: Secreto del token para autenticar la API.proxmox_host: Nodo de Proxmox donde se desplegará la VM.ssh_key: Clave pública SSH para acceder a las VMs.template_ubuntu: Nombre de la plantilla Cloud-Init que se utilizará para clonar las VMs.
El recurso principal en este repositorio es proxmox_vm_qemu, utilizado para crear VMs en Proxmox basadas en una plantilla Cloud-Init. Este recurso permite configurar parámetros como CPU, memoria, almacenamiento y red, asegurando una inicialización adecuada de las VMs.
- Creación de una plantilla Cloud-Init en Proxmox - Medium
- Guía paso a paso: Crear una imagen Cloud-Init lista para usar en Proxmox
- Generación de token en Proxmox para uso con Terraform
No es necesario tener Proxmox instalado localmente. Puedes utilizar Visual Studio Code con el plugin de Terraform para ejecutar el código, siempre y cuando el sistema desde donde ejecutes Terraform tenga acceso a la red donde se encuentra el clúster Proxmox.
Para una mejor experiencia al trabajar con Terraform en Visual Studio Code, puedes usar la siguiente extensión:
- Nombre: Terraform
- ID: 4ops.terraform
- Descripción: Soporte para el lenguaje de configuración Terraform (incluye Terragrunt)
- Versión: 0.2.5
- Editor: Anton Kulikov
- Enlace en VS Marketplace: Terraform Extension
Este proyecto está licenciado bajo la Licencia MIT. Consulta el archivo LICENSE para más detalles.