Ansible vs Terraform:¿Cuál  de estas Herramientas de Automatización Deberías Usar?

Ansible vs Terraform:¿Cuál de estas Herramientas de Automatización Deberías Usar?

por Raúl Unzué

Automatización con Ansible y Terraform

Si trabajas en administración de sistemas o DevOps, seguro has oído hablar de Ansible y Terraform. Ambos son herramientas de automatización (también podéis revisar como automatizar un despliegue de clúster Kubernetes con Powershell), pero cumplen roles distintos y es común que la gente los compare. Aquí vamos a explicarte de dónde vienen, qué hacen y en qué se diferencian, para que sepas cuál usar según tu necesidad.

Ambas herramientas os servirán para gestionar tanto máquinas virtuales como servidores dedicados, podéis ver qué diferencia hay entre ambos.

Un poco de historia: ¿de dónde vienen Ansible y Terraform?

Ansible: automatización sin complicaciones

Ansible nació en 2012, creado por Michael DeHaan, con una idea clara: hacer la configuración de servidores lo más simple posible. No quería que los administradores de sistemas tuvieran que lidiar con agentes en cada máquina ni con un lenguaje complicado. Por eso, Ansible usa SSH y YAML, lo que lo hace fácil de implementar. En 2015, Red Hat lo compró y desde entonces ha sido una de las herramientas más populares en la automatización de IT.

Terraform: infraestructura como código

Terraform apareció en 2014, desarrollado por HashiCorp, con un enfoque diferente. En vez de configurar servidores, su objetivo es definir y desplegar Infraestructura de forma declarativa. Usa su propio lenguaje, HCL (HashiCorp Configuration Language), y permite gestionar desde servidores en la nube hasta redes completas. Es perfecto para la era del Cloud Computing.

Características principales Ansible y Terraform

Tanto Ansible como Terraform buscan simplificar el trabajo de los administradores de sistemas y equipos de DevOps, pero cada uno se especializa en una tarea diferente.

CaracterísticaAnsibleTerraform
EnfoqueConfiguración y automatizaciónProvisionamiento de infraestructura
LenguajeYAML (Playbooks)HCL (HashiCorp Configuration Language)
Modo de operaciónImperativo y declarativoDeclarativo
AgentesNo necesita agentesNo necesita agentes
EstadoNo almacena estadoUsa archivos de estado para seguimiento
CompatibilidadServidores, contenedores, redes, aplicacionesInfraestructura en la nube, redes, servidores
Ejemplo de usoInstalar software en servidoresCrear máquinas virtuales en AWS o Azure

 

¿Qué significa todo esto?

  1. Imperativo vs. Declarativo
    • Ansible puede trabajar en modo imperativo y declarativo. Puedes decirle "haz esto paso a paso" o simplemente definir el estado final deseado.
    • Terraform es completamente declarativo. No le dices cómo hacer algo, sino simplemente qué quieres y él se encarga del resto.
  2. Estado
    • Ansible no mantiene un estado de la configuración. Si ejecutas un playbook varias veces, no recuerda la ejecución anterior.
    • Terraform usa un archivo de estado para recordar qué infraestructura ha creado y evitar hacer cambios innecesarios.
  3. Ámbito de uso
    • Ansible se usa principalmente para administrar servidores: instalar software, configurar servicios, aplicar parches, etc.
    • Terraform se usa para crear y gestionar la infraestructura: redes, balanceadores de carga, máquinas virtuales y más.

Ejemplos básicos de Ansible y Terraform

Nada mejor que un ejemplo para entender cómo funcionan estas herramientas.

Ejemplo 1: Crear un servidor en AWS con Terraform

#################

provider "aws" {

  region = "us-east-1"

}

resource "aws_instance" "mi_servidor" {

  ami           = "ami-12345678"

  instance_type = "t2.micro"

  tags = {

    Name = "Servidor-Terraform"

  }

}

################

  • Este código le dice a Terraform que cree una instancia de AWS en la región "us-east-1" con un tipo "t2.micro".
  • Para aplicar estos cambios, ejecutaríamos:

terraform init

terraform apply

Ejemplo 2: Configurar Apache en un servidor con Ansible

################

- name: Instalar Apache en un servidor

  hosts: servidores_web

  become: yes

  tasks:

    - name: Instalar paquete Apache

      apt:

        name: apache2

        state: present

#################

  • Este playbook de Ansible instala Apache en los servidores definidos en "servidores_web".
  • Para ejecutarlo, usaríamos:

ansible-playbook apache.yml

Diferencias clave y cuándo usar cada uno

Ahora que hemos visto ejemplos, resumamos las diferencias más importantes:

¿Qué hacen realmente?

  • Ansible se usa para configurar servidores y aplicaciones.
  • Terraform se usa para crear y administrar infraestructura.

Lenguaje y sintaxis

  • Ansible usa YAML, que es más fácil para administradores de sistemas sin experiencia en programación.
  • Terraform usa HCL, diseñado para gestionar infraestructura de forma estructurada.

¿Cómo trabajan?

  • Ansible se ejecuta sobre servidores existentes mediante SSH.
  • Terraform crea y destruye recursos en la nube directamente.

Estado y control de cambios

  • Terraform mantiene un "estado" y puede actualizar infraestructura sin necesidad de rehacer todo.
  • Ansible no guarda estado, lo que puede hacer más difícil el control de cambios.

¿Cuál deberías usar Ansible o Terraform?

Ni Ansible ni Terraform son herramientas excluyentes, de hecho, son complementarias. Terraform es la mejor opción para crear y gestionar infraestructura, mientras que Ansible es ideal para configurar servidores y aplicaciones dentro de esa infraestructura.

La elección depende de tu necesidad:

  • Si quieres desplegar servidores y redes en la nube, usa Terraform.
  • Si necesitas configurar y gestionar esos servidores, usa Ansible.
  • Si trabajas en DevOps, lo ideal es combinarlos:
    • Terraform crea la infraestructura.
    • Ansible instala y configura el software en esa infraestructura.

Si estás empezando en automatización, Ansible es más fácil de aprender y útil para tareas diarias. Si te interesa la nube y la Infraestructura como Código, Terraform es imprescindible.

Fin del Artículo. ¡Cuéntanos algo en los Comentarios!

Temas Relacionados: Software Ansible Terraform
Redactor del Artículo: Raúl Unzué

Raúl Unzué

Soy un apasionado de la virtualización con más de 20 años de experiencia, especializado en soluciones como VMware(premio vExpert y vExpert Pro desde 2013), Proxmox e Hyper-V. Durante mi carrera, he ayudado a empresas a optimizar sus infraestructuras TI mientras comparto mis conocimientos como redactor IT. Mi objetivo es traducir lo complejo en algo práctico y accesible, combinando teoría con experiencia real. Si te interesa la virtualización, las herramientas TI o simplemente aprender algo nuevo, espero ayudarte con mis artículos.