¿Qué es Ansible?

Ansible es una herramienta para el aprovisionamiento de servicios muy fácil de aprender y muy cómoda de utilizar basada en Python y YAML para aprovisionar fácilmente el software que debe ejecutarse en tu servidor web.

Este curso ha sido marcado como anticuado y no está siendo revisado de forma activa. Es posible que la información pueda estar desactualizada o que los enlaces se hayan roto.

Ansible es una herramienta que nos permite aprovisionar servidores y servicios de forma declarativa, lo que significa que en lugar de indicarle paso a paso qué comandos ejecutar, le decimos cómo queremos que quede el servidor una vez terminado el proceso. Esto simplifica enormemente la tarea de preparar una máquina desde cero, especialmente cuando alquilamos un servidor vacío con una instalación básica de un sistema operativo como Ubuntu o Debian.

Cuando hablamos de aprovisionamiento, nos referimos a ese conjunto de pasos necesarios para instalar y configurar todo el software y servicios que harán útil a ese servidor. Tradicionalmente, esto se hacía con shell scripts que ejecutaban comandos uno tras otro, como apt-get update o apt-get install. Sin embargo, estos scripts suelen volverse complejos y difíciles de mantener, ya que requieren manejar condicionales para evitar repetir instalaciones o gestionar errores manualmente.

Con Ansible, evitamos esos problemas porque su enfoque es declarativo. Por ejemplo, en lugar de decirle que ejecute apt-get install nginx, le indicamos que queremos que el paquete nginx esté instalado. Ansible se encarga de verificar el estado actual del servidor y ejecutar solo las acciones necesarias para alcanzar ese estado deseado. Esto nos ahorra tener que escribir código para comprobar si un paquete ya está instalado o para manejar fallos en la instalación.

Además, Ansible está organizado en módulos, que son componentes especializados para realizar tareas comunes. Hay módulos para instalar paquetes en diferentes gestores como apt o yum, para crear usuarios, configurar redes, iniciar o detener servicios, entre otros. Si alguna tarea no está cubierta por los módulos oficiales, podemos recurrir a Ansible Galaxy, un repositorio comunitario donde se comparten playbooks y roles que otros usuarios han creado para tareas específicas, como instalar versiones concretas de Ruby o configurar bases de datos PostgreSQL.

Otra ventaja importante es que Ansible es software libre y multiplataforma. Solo necesitamos tener Python instalado en nuestra máquina y acceso SSH a los servidores que queremos gestionar. Funciona en cualquier sistema Unix, incluyendo Linux, FreeBSD y macOS. En Windows, aunque no se puede instalar directamente Ansible, podemos usar el Subsistema de Windows para Linux (WSL) en Windows 10 para ejecutarlo sin problemas. Además, Ansible puede controlar servidores Windows Server, lo que amplía su compatibilidad.

Por último, Ansible es muy económico en términos de infraestructura, ya que no requiere instalar servidores intermedios ni agentes en los nodos gestionados. Solo necesitamos un equipo desde donde ejecutar Ansible, que se conectará a los servidores para aplicar las configuraciones.

Para ilustrar cómo sería un ejemplo básico de Ansible para instalar un paquete con el módulo apt, podríamos tener un playbook así:

---
- hosts: servidores
  become: yes
  tasks:
    - name: Instalar nginx
      apt:
        name: nginx
        state: present
        update_cache: yes

En este playbook, indicamos que en los hosts del grupo servidores queremos que el paquete nginx esté instalado (state: present). También le decimos que actualice la caché de paquetes antes de la instalación (update_cache: yes). Ansible se encargará de verificar si nginx ya está instalado y solo lo instalará si es necesario, sin que tengamos que preocuparnos por los detalles de los comandos que se ejecutan internamente.

Así, Ansible nos ofrece una forma ordenada, eficiente y mantenible de gestionar la configuración y aprovisionamiento de servidores, evitando los problemas habituales de los scripts tradicionales y facilitando la automatización en entornos de infraestructura.

Lista de reproducción
  1. 1
    ¿Qué es Ansible?
    6 minutos
  2. 2
    Instalación de Ansible
    7 minutos
  3. 3
    Inventario
    7 minutos
  4. 4
    Comandos básicos ad-hoc
    7 minutos
  5. 5
    Comandos ad-hoc para controlar módulos
    9 minutos
  6. 6
    Redactando un playbook
    9 minutos
  7. 7
    Conectarse como otro usuario (inciso)
    8 minutos
  8. 8
    Handlers
    5 minutos