Ansible: automatiza la configuración de tus servidores
Tiempo de lectura: 9 minutos Categoría: Linux · Sysadmin Nivel: Intermedio
Imagina que tienes que configurar 10 servidores exactamente igual: instalar paquetes, crear usuarios, configurar el firewall, desplegar aplicaciones. Hacerlo manualmente en cada uno es tedioso, propenso a errores y no escala. Ansible resuelve esto de forma elegante y sin agentes.
¿Qué es Ansible?
Ansible es una herramienta de automatización de infraestructura desarrollada por Red Hat. Te permite definir el estado deseado de tus servidores en archivos YAML llamados playbooks y ejecutarlos para que Ansible se encargue de llevar los servidores a ese estado.
Lo que distingue a Ansible de otras herramientas similares como Puppet o Chef es que no necesita ningún agente instalado en los servidores que gestiona. Se conecta por SSH, ejecuta los módulos necesarios y se desconecta. Si tienes SSH funcionando ya tienes todo lo que necesitas para empezar con Ansible.
Ansible es también idempotente, lo que significa que puedes ejecutar el mismo playbook varias veces y el resultado siempre será el mismo. Si un paquete ya está instalado Ansible no lo reinstala, simplemente verifica que está ahí y continúa.
Conceptos fundamentales
El inventario es la lista de servidores que Ansible va a gestionar. Puede ser un archivo de texto simple con las IPs o nombres de host, o un inventario dinámico que consulta una API para obtener la lista de servidores en tiempo real.
Un módulo es una unidad de trabajo que Ansible sabe ejecutar. Hay módulos para instalar paquetes, copiar archivos, gestionar servicios, crear usuarios, configurar el firewall y cientos de cosas más. Ansible incluye más de 3000 módulos en su instalación estándar.
Una tarea es la aplicación de un módulo con parámetros específicos. Un playbook es un archivo YAML que contiene una o más plays, donde cada play define en qué hosts se ejecuta y qué lista de tareas se llevan a cabo. Un rol es una forma de organizar playbooks complejos en una estructura reutilizable.
Instalar Ansible
Ansible solo necesita estar instalado en la máquina de control, que es desde donde lanzas los playbooks. Los servidores gestionados solo necesitan Python y SSH.
En Ubuntu y Debian instala Ansible con apt después de añadir el repositorio oficial PPA. En Arch Linux está disponible directamente con pacman. En Fedora con dnf. También puedes instalarlo con pip en cualquier sistema que tenga Python.
Tu primer inventario y playbook
Crea un archivo llamado inventario con los grupos de servidores entre corchetes y las IPs debajo de cada grupo. Para verificar la conexión usa el módulo ping con el comando ansible all seguido del inventario y el módulo.
Un playbook básico indica en qué hosts se ejecuta, si necesita privilegios con become, y la lista de tareas. Cada tarea tiene un nombre descriptivo y usa un módulo con sus parámetros. Ejecutas el playbook con ansible-playbook seguido del archivo y el inventario.
Módulos esenciales
El módulo apt gestiona paquetes en Debian y Ubuntu. El módulo package funciona en cualquier distribución automáticamente. El módulo copy copia archivos a los servidores remotos. El módulo template hace lo mismo pero procesando el archivo como plantilla Jinja2, útil para generar configuraciones dinámicas con variables.
El módulo service gestiona servicios del sistema. El módulo user gestiona usuarios. Los módulos firewalld y ufw gestionan el firewall según la distribución.
Variables, plantillas y handlers
Las variables hacen tus playbooks reutilizables. Puedes definirlas en el playbook, en archivos separados, en el inventario a nivel de host o grupo, o pasarlas como argumentos al ejecutar.
Los handlers son tareas especiales que solo se ejecutan cuando son notificados por otra tarea. El caso más común es reiniciar un servicio cuando su configuración cambia. Si la configuración ya era correcta y no hay cambios el handler no se ejecuta, evitando reinicios innecesarios.
Roles y Ansible Galaxy
Cuando tus playbooks crecen los roles te ayudan a mantener todo organizado con una estructura de directorios estándar para tareas, handlers, plantillas y variables. Ansible Galaxy es el repositorio de roles de la comunidad donde encontrarás roles para configurar prácticamente cualquier servicio popular, listos para usar.
Conclusión
Ansible es una de las herramientas más valiosas para administrar servidores. La inversión en escribir los playbooks se recupera la primera vez que configuras un servidor nuevo en minutos en vez de horas, o cuando aplicas un cambio a 20 servidores a la vez.
¿Usas Ansible, Puppet, Chef o prefieres scripts de Bash? El debate es eterno.

