
Ansible vs Terraform para automatizar Proxmox: ¿cuál deberías usar?
Crear a mano máquinas virtuales en Proxmox funciona bien cuando un entorno tiene unas pocas cargas de trabajo estables. Se vuelve más difícil de controlar cuando los administradores tienen que desplegar decenas de sistemas parecidos, reconstruir entornos de prueba o mantener la configuración coherente en varios nodos Proxmox.
Ansible y Terraform pueden automatizar Proxmox, pero abordan el problema de forma distinta. Terraform brilla definiendo y gestionando recursos de infraestructura, y Ansible brilla configurando sistemas operativos, instalando aplicaciones y coordinando tareas operativas.
Cuál encaja depende de lo que intentes automatizar, y a muchos entornos Proxmox les conviene usar los dos.
¿Cuál es la diferencia principal entre Ansible y Terraform?
Terraform es una herramienta de infraestructura como código. Los administradores describen los recursos de infraestructura en archivos de configuración declarativos, y Terraform calcula los cambios necesarios para que el entorno real coincida con esa configuración. Su flujo de trabajo central se basa en planificar, aplicar y gestionar el estado.
Una configuración de Terraform podría definir una máquina virtual de Proxmox con un nombre concreto, un número de procesadores, una asignación de memoria, una ubicación de almacenamiento, un bridge de red y ajustes de cloud-init. Terraform compara esa definición con la infraestructura registrada en su estado y produce un plan que muestra lo que pretende crear, actualizar o eliminar.
Ansible usa playbooks en YAML legibles por personas para automatizar tareas y mantener los sistemas en el estado deseado. Tiene una arquitectura sin agentes y suele conectarse a los sistemas Linux por SSH. Los módulos de Ansible suelen estar diseñados para no hacer cambios cuando un sistema ya coincide con el estado pedido, aunque la documentación advierte de que no todos los módulos ni todos los playbooks son del todo idempotentes.
Un playbook de Ansible podría crear una máquina virtual en Proxmox, esperar a que arranque, conectarse a su sistema operativo, instalar Docker, configurar usuarios, desplegar una aplicación y reiniciar un servicio.
En resumen, Terraform gestiona sobre todo objetos de infraestructura, mientras que Ansible puede gestionar infraestructura, sistemas operativos y configuración de aplicaciones.
¿Cómo funciona Terraform con Proxmox?
Proxmox VE expone una API REST que usa JSON, lo que permite que herramientas de automatización externas creen y gestionen recursos.
La mayoría de los despliegues de Terraform para Proxmox usan un provider desarrollado por la comunidad. Una opción muy extendida es el provider BPG para Proxmox, que admite Terraform y OpenTofu y se comunica sobre todo a través de la API de Proxmox. Algunas operaciones también pueden requerir acceso SSH a un nodo Proxmox.
El provider puede gestionar máquinas virtuales de Proxmox, contenedores LXC, archivos de almacenamiento, configuraciones de cloud-init y otros recursos de infraestructura. También puede obtener información de máquinas virtuales existentes mediante data sources.
Terraform resulta especialmente útil cuando una organización quiere entornos repetibles. Un administrador puede definir en código un grupo de máquinas virtuales, guardar esa configuración en Git y revisar los cambios de infraestructura propuestos antes de aplicarlos.
Los módulos reutilizables de Terraform pueden estandarizar los despliegues habituales. Un módulo podría crear una máquina virtual Linux con ajustes aprobados de CPU, memoria, disco, VLAN, nombres y etiquetas, y los equipos pueden reutilizarlo para desarrollo, pruebas y producción cambiando solo un conjunto controlado de variables. Terraform define un módulo como una colección de recursos que se gestionan juntos.
Terraform también te da un ciclo de vida claro de los recursos. Quitar una máquina virtual de la configuración puede hacer que Terraform proponga destruirla. Ese comportamiento ayuda cuando la infraestructura debe seguir el código con precisión, pero puede ser peligroso cuando los administradores no revisan el plan con cuidado.
¿Cuáles son los principales riesgos de Terraform en Proxmox?
Terraform depende del estado. El archivo de estado relaciona los recursos de la configuración de Terraform con los objetos reales de Proxmox, y sin una gestión fiable del estado Terraform puede perder la pista de la infraestructura o proponer cambios incorrectos.
Los equipos deberían guardar el estado en un backend remoto protegido en lugar de pasarse archivos de estado locales entre administradores. Los archivos de estado y de plan pueden contener detalles de la infraestructura y valores sensibles, como tokens de API o contraseñas, y HashiCorp advierte expresamente de que puede aparecer información sensible en ambos archivos.
La compatibilidad del provider es otra cuestión a tener en cuenta. El provider de Proxmox se mantiene por separado de Proxmox VE, así que las actualizaciones de Proxmox o del provider pueden introducir cambios de comportamiento. La propia documentación de actualización del provider aconseja fijar las versiones, revisar su registro de cambios y comprobar si hay cambios incompatibles antes de actualizar.
Terraform funciona mejor cuando el equipo trata las versiones del provider, el almacenamiento del estado y la revisión de los planes como componentes de infraestructura de producción.
¿Cómo funciona Ansible con Proxmox?
Ansible ofrece soporte para Proxmox a través de la colección community.proxmox. La colección incluye módulos para gestionar máquinas virtuales KVM, contenedores, plantillas, nodos del clúster, controles de acceso, información del firewall, zonas de redes definidas por software e interfaces de red de los nodos.
Los módulos de Proxmox se comunican con la API de Proxmox y en general requieren la biblioteca de Python proxmoxer en el sistema de control de Ansible. Los módulos de máquinas virtuales pueden crear, actualizar, arrancar, parar y eliminar recursos de Proxmox, mientras que los módulos de información pueden obtener detalles de los sistemas existentes.
Ansible toma ventaja una vez creada la máquina virtual. Un playbook puede configurar la red, crear usuarios, instalar actualizaciones de seguridad, desplegar agentes de monitoreo, configurar montajes de almacenamiento e instalar aplicaciones, y el mismo sistema de automatización puede gestionar hosts Proxmox, sistemas operativos invitados, equipos de red y servicios de aplicaciones.
Eso hace que Ansible sea adecuado para las operaciones continuas. Los equipos pueden ejecutar cada mes un playbook de parches, rotar certificados, actualizar paquetes o comprobar que los servicios necesarios siguen activados.
El modo check de Ansible puede mostrar por adelantado algunos cambios de un playbook sin aplicarlos. Eso sí, el soporte depende de los módulos y las tareas implicados, así que no trates el modo check como un equivalente perfecto de un plan de Terraform.
¿Es mejor Ansible para aprovisionar en Proxmox?
Ansible puede aprovisionar máquinas virtuales en Proxmox, sobre todo cuando el proceso de despliegue tiene varios pasos en orden. Un playbook puede clonar una plantilla, arrancar la máquina virtual, esperar a que tenga acceso a la red y configurar el sistema operativo, y ese flujo procedimental puede ser más fácil de seguir en Ansible que en Terraform.
Ansible no depende de un archivo central de estado de la infraestructura como Terraform. Revisa el entorno actual cada vez que se ejecuta un playbook y realiza las tareas definidas.
Eso reduce el trabajo de gestionar el estado, pero la propiedad de los recursos queda menos explícita. Una máquina virtual creada por un playbook puede modificarse después a mano o desde otro playbook, sin un archivo de estado único que deje ver el conflicto.
Terraform suele dar un control más firme del ciclo de vida para la infraestructura que tiene que seguir coincidiendo con un inventario declarado de recursos.
¿Conviene usar Terraform o Ansible?
Elige Terraform cuando tu objetivo principal sea crear y mantener infraestructura en Proxmox. Encaja para desplegar máquinas virtuales estandarizadas, contenedores LXC, archivos de cloud-init y conjuntos repetibles de recursos, y es la opción más fuerte cuando los equipos exigen revisiones de código y un plan visible antes de aplicar cambios de infraestructura.
Elige Ansible cuando tu objetivo principal sea configurar sistemas y automatizar el trabajo operativo. Se adapta mejor a instalar paquetes, configurar la seguridad, desplegar aplicaciones, actualizar y montar flujos de trabajo que abarcan la API de Proxmox y el sistema operativo invitado. Ansible también puede bastar en entornos pequeños que necesitan un aprovisionamiento básico de máquinas virtuales sin mantener el estado de Terraform.
¿Conviene usar Ansible y Terraform juntos?
Usar las dos herramientas da el reparto de responsabilidades más claro. Terraform puede crear la máquina virtual en Proxmox, asignarle sus recursos, conectarla a la red correcta y darle su configuración inicial de cloud-init, y después Ansible puede conectarse a esa máquina y configurar todo lo que hay dentro del sistema operativo.
Terraform responde a "¿qué infraestructura debería existir?" y Ansible responde a "¿cómo debería configurarse y operarse cada sistema?".
Esta combinación exige más herramientas, pero ningún producto tiene que encargarse de todas las capas. Guarda las dos configuraciones en control de versiones, protege el estado de Terraform, fija las versiones del provider y de la colección y prueba los cambios en un entorno Proxmox que no sea de producción.
En un despliegue de Proxmox que crece, Terraform suele ser la mejor base para aprovisionar infraestructura, mientras que Ansible es la mejor herramienta para la configuración y las operaciones continuas. Usar las dos juntas hace más repetible el ciclo de vida completo de la máquina virtual.