
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ística | Ansible | Terraform |
---|---|---|
Enfoque | Configuración y automatización | Provisionamiento de infraestructura |
Lenguaje | YAML (Playbooks) | HCL (HashiCorp Configuration Language) |
Modo de operación | Imperativo y declarativo | Declarativo |
Agentes | No necesita agentes | No necesita agentes |
Estado | No almacena estado | Usa archivos de estado para seguimiento |
Compatibilidad | Servidores, contenedores, redes, aplicaciones | Infraestructura en la nube, redes, servidores |
Ejemplo de uso | Instalar software en servidores | Crear máquinas virtuales en AWS o Azure |
¿Qué significa todo esto?
- Imperativo vs. Declarativo
- 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.
- Á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!