Ansible vs Terraform: cual elegir para tu infraestructura
Ansible vs Terraform es una de las comparativas mas habituales en el mundo DevOps. Ambas son herramientas de infraestructura como codigo (IaC) pero resuelven problemas distintos. En este post te explico las diferencias reales, cuando usar cada una y mi opinion tras haberlas usado en produccion en entornos GCP y Azure.
Que es Terraform
Terraform es una herramienta de aprovisionamiento de infraestructura creada por HashiCorp. Su funcion principal es crear y gestionar recursos en la nube: maquinas virtuales, redes, bases de datos, buckets, clusters de Kubernetes… Usa un lenguaje declarativo llamado HCL (HashiCorp Configuration Language). Consulta la documentacion oficial de Terraform para mas detalle.
# Ejemplo: crear una instancia en GCP con Terraform
resource "google_compute_instance" "mi-servidor" {
name = "mi-servidor"
machine_type = "e2-medium"
zone = "europe-west1-b"
boot_disk {
initialize_params {
image = "debian-cloud/debian-11"
}
}
network_interface {
network = "default"
access_config {}
}
}
Que es Ansible
Ansible es una herramienta de configuracion y automatizacion creada por Red Hat. Su funcion principal es configurar servidores ya existentes: instalar software, gestionar archivos de configuracion, desplegar aplicaciones, gestionar usuarios… Usa YAML para definir los «playbooks». Consulta la documentacion oficial de Ansible.
# Ejemplo: instalar nginx con Ansible
- name: Instalar y configurar nginx
hosts: servidores_web
become: yes
tasks:
- name: Instalar nginx
apt:
name: nginx
state: present
- name: Arrancar y habilitar nginx
systemd:
name: nginx
state: started
enabled: yes
Ansible vs Terraform: comparativa completa
| Caracteristica | Terraform | Ansible |
|---|---|---|
| Funcion principal | Aprovisionar infraestructura | Configurar servidores |
| Enfoque | Declarativo | Imperativo/Declarativo |
| Estado | Guarda estado (terraform.tfstate) | Sin estado (idempotente) |
| Agente en el servidor | No necesita agente | No necesita agente (SSH) |
| Lenguaje | HCL (propio de HashiCorp) | YAML |
| Curva de aprendizaje | Media-alta | Baja-media |
| Multicloud | Excelente — provider por cloud | Bueno — modulos de colecciones |
| Gestion de drift | Excelente (terraform plan) | Limitada |
| Empresa detras | HashiCorp (IBM) | Red Hat (IBM) |
Cuando usar Terraform
Terraform brilla cuando necesitas crear y gestionar recursos en la nube de forma reproducible. Si tienes que crear el mismo entorno en dev, staging y produccion, o en varios cloud providers, Terraform es tu herramienta.
# Ver que cambios va a hacer antes de aplicar
terraform plan
# Aplicar los cambios
terraform apply
# Ver el estado actual de la infraestructura
terraform show
# Destruir toda la infraestructura definida
terraform destroy
# Formatear el codigo HCL
terraform fmt
Lo mejor de Terraform es el comando terraform plan — te muestra exactamente que va a crear, modificar o destruir antes de hacerlo. En produccion esto es imprescindible.
Casos de uso ideales para Terraform
- Crear VPCs, subnets, grupos de seguridad en AWS/GCP/Azure
- Aprovisionar clusters de Kubernetes (GKE, EKS, AKS)
- Gestionar bases de datos gestionadas en la nube
- Crear y gestionar cuentas de servicio e IAM
- Infraestructura multicloud o multi-region
Cuando usar Ansible
Ansible brilla cuando tienes servidores ya creados y necesitas configurarlos, actualizarlos o desplegar aplicaciones en ellos. Es especialmente util para gestionar flotas de servidores Linux.
# Inventario de servidores (inventory.ini)
[servidores_web]
192.168.1.10
192.168.1.11
[bases_de_datos]
192.168.1.20
# Ejecutar un playbook
ansible-playbook -i inventory.ini instalar-nginx.yml
# Ejecutar un comando en todos los servidores
ansible all -i inventory.ini -m command -a "uptime"
# Verificar conectividad
ansible all -i inventory.ini -m ping
Casos de uso ideales para Ansible
- Instalar y configurar software en servidores Linux
- Desplegar aplicaciones en produccion
- Gestionar configuraciones (nginx, sshd, firewall…)
- Actualizaciones del sistema en lote
- Hardening de seguridad en servidores
La combinacion perfecta: Terraform + Ansible juntos
En la practica, no es una decision de uno u otro — se usan juntos. Este es el flujo tipico que uso en produccion:
- Terraform crea la infraestructura: VM, red, disco, IP publica
- Ansible configura la VM: instala el software, despliega la app, configura el firewall
# 1. Terraform crea la VM y genera el inventario de Ansible
terraform apply
terraform output instancias_ips > inventory.ini
# 2. Ansible configura las VMs recien creadas
ansible-playbook -i inventory.ini configurar-servidor.yml
Mi opinion: Ansible vs Terraform en 2026
Tras usarlos en entornos GCP y Azure con equipos de infraestructura:
- Empieza por Ansible si gestionas servidores Linux — la curva de aprendizaje es mas suave y el ROI inmediato. Si ya dominas Systemd y los comandos de Linux, Ansible te resulta natural.
- Aprende Terraform cuando necesites crear o gestionar infraestructura en la nube de forma reproducible. Es la herramienta estandar en cualquier equipo cloud.
- Usalos juntos en produccion — se complementan perfectamente.
¿Cual es mejor? Ninguna — son herramientas distintas para problemas distintos. La pregunta correcta es: necesito crear infraestructura (Terraform) o configurar infraestructura ya existente (Ansible)?
Conclusion
Ansible y Terraform no compiten — se complementan. Terraform para aprovisionar, Ansible para configurar. Con los dos en tu toolbox cubres el ciclo completo de infraestructura como codigo.
Con este post cerramos el Modulo 3. En el proximo arrancaremos el Modulo 4: CI/CD con GitHub Actions desde cero. Usas Ansible, Terraform o ambos? Cuentame en los comentarios.
