Introducción a la automatización con Ansible
Ansible es una herramienta de automatización de TI de código abierto que facilita la gestión de configuraciones, la provisión de infraestructura y la orquestación de tareas complejas. A diferencia de otras plataformas, Ansible no requiere agentes instalados en los nodos remotos y utiliza SSH para comunicarse, lo que simplifica enormemente su adopción.
¿Por qué Ansible
- Simplicidad: utiliza playbooks escritos en YAML, fáciles de leer y mantener.
- Sin agentes: todo se controla vía SSH o WinRM.
- Modularidad: cientos de módulos listos para tareas comunes.
- Escalabilidad: adecua desde entornos pequeños hasta grandes nubes públicas.
Preparación del entorno
Instalación de Ansible
Para instalar Ansible en un sistema basados en Debian/Ubuntu:
sudo apt install ansible -y
En CentOS/RHEL:
sudo yum install ansible -y
Inventario básico
El archivo de inventario define los hosts en los que Ansible actuará. Por defecto está en /etc/ansible/hosts
pero podemos definir uno propio:
web1.example.com
web2.example.com
[bd]
db1.example.com
También es posible utilizar inventarios dinámicos para entornos cloud (AWS, Azure, GCP).
Tu primer playbook
Un playbook es un archivo YAML que describe un conjunto de plays (tareas) que se ejecutarán sobre uno o varios hosts.
Estructura de un playbook
Sección | Descripción |
---|---|
hosts | Define el grupo de inventario objetivo. |
vars | Variables de configuración. |
tasks | Lista de acciones a ejecutar. |
handlers | Tareas desencadenadas por cambios. |
Ejemplo práctico
A continuación, un playbook sencillo llamado primer_playbook.yml
:
hosts: servidores
become: yes
vars:
paquete_web: nginx
tasks:
– name: Instalar paquete web
apt:
name: {{ paquete_web }}
state: present
– name: Iniciar y habilitar servicio web
service:
name: {{ paquete_web }}
state: started
enabled: yes
– name: Crear archivo de bienvenida
copy:
dest: /var/www/html/index.html
content:
¡Bienvenido a Ansible!
– name: Ajustar permisos en documento
file:
path: /var/www/html/index.html
owner: www-data
mode: 0644
Ejecución del playbook
Para lanzar el playbook:
Donde -i hosts
indica el archivo de inventario personalizado.
Módulos esenciales
Ansible ofrece más de 1.300 módulos para diferentes propósitos. Entre los más utilizados:
- apt / yum / dnf: gestión de paquetes en Linux.
- service: arranque y paro de servicios.
- copy / template: copiado de ficheros y plantillas Jinja2.
- user / group: administración de usuarios y grupos.
- git: clonación de repositorios.
- command / shell: ejecución de comandos arbitrarios.
Buenas prácticas y estructura avanzada
Roles
Los roles permiten organizar tareas, handlers, variables y plantillas en directorios predefinidos. Su estructura típica:
└── webserver/
├── tasks/main.yml
├── handlers/main.yml
├── templates/index.html.j2
├── vars/main.yml
└── defaults/main.yml
Vault para datos sensibles
Para proteger credenciales y secretos, Ansible Vault cifra archivos:
ansible-playbook site.yml –ask-vault-pass
Casos de uso avanzados
Con Ansible puedes automatizar:
- Despliegue de contenedores Docker y Kubernetes.
- Configuración de balanceadores (HAProxy, Nginx).
- Integración de sistemas de monitorización (Prometheus, Grafana).
- Implementación de VPN corporativas como OpenVPN o WireGuard, generando certificados y configuraciones en lote.
Conclusión
La curva de aprendizaje de Ansible es suave gracias a su sintaxis clara y a la enorme cantidad de playbooks y roles compartidos por la comunidad. Comenzar con tu primer playbook te permitirá:
- Entender la estructura fundamental de Ansible.
- Automatizar configuraciones repetitivas y seguras.
- Escalar operaciones a múltiples servidores sin complejidad.
Adopta las buenas prácticas (roles, vault, testing) y aprovecha la comunidad de Ansible Galaxy para acelerar tus proyectos de automatización. ¡Empieza hoy mismo y potencia la eficiencia de tu infraestructura!
Leave a Reply