Comparativa Ansible vs Terraform para gestionar infraestructura como codigo
|

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

CaracteristicaTerraformAnsible
Funcion principalAprovisionar infraestructuraConfigurar servidores
EnfoqueDeclarativoImperativo/Declarativo
EstadoGuarda estado (terraform.tfstate)Sin estado (idempotente)
Agente en el servidorNo necesita agenteNo necesita agente (SSH)
LenguajeHCL (propio de HashiCorp)YAML
Curva de aprendizajeMedia-altaBaja-media
MulticloudExcelente — provider por cloudBueno — modulos de colecciones
Gestion de driftExcelente (terraform plan)Limitada
Empresa detrasHashiCorp (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:

  1. Terraform crea la infraestructura: VM, red, disco, IP publica
  2. 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.

¡No te pierdas los próximos posts!

¡No hacemos spam! Lee nuestra política de privacidad para obtener más información.

Publicaciones Similares

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *