En este tema, aprenderás a escribir tu primer playbook de Ansible. Un playbook es un archivo YAML que define una serie de tareas que Ansible ejecutará en los hosts especificados. Los playbooks son fundamentales para automatizar tareas complejas y repetitivas en múltiples sistemas.
Objetivos
- Comprender la estructura básica de un playbook.
- Escribir un playbook simple.
- Ejecutar el playbook y verificar los resultados.
Estructura Básica de un Playbook
Un playbook de Ansible está compuesto por una lista de "plays". Cada "play" se aplica a un grupo de hosts y define una serie de tareas que se ejecutarán en esos hosts. La estructura básica de un playbook es la siguiente:
--- - name: Nombre del play hosts: grupo_de_hosts become: yes/no tasks: - name: Nombre de la tarea módulo: opción1: valor1 opción2: valor2
Desglose de la Estructura
---
: Indica el inicio de un documento YAML.- name
: Nombre descriptivo del play.hosts
: Define los hosts o grupos de hosts en los que se ejecutará el play.become
: (Opcional) Indica si se deben ejecutar las tareas con privilegios elevados (sudo).tasks
: Lista de tareas a ejecutar.- name
: Nombre descriptivo de la tarea.módulo
: Módulo de Ansible que se utilizará para la tarea.opción1
,opción2
: Opciones específicas del módulo.
Escribiendo un Playbook Simple
Vamos a escribir un playbook simple que instale el servidor web Apache en un grupo de hosts llamado webservers
.
Paso 1: Crear el Archivo de Inventario
Primero, necesitamos definir nuestro inventario de hosts. Crea un archivo llamado hosts
con el siguiente contenido:
Paso 2: Escribir el Playbook
Crea un archivo llamado install_apache.yml
con el siguiente contenido:
--- - name: Instalar y configurar Apache hosts: webservers become: yes tasks: - name: Instalar Apache apt: name: apache2 state: present when: ansible_os_family == "Debian" - name: Iniciar el servicio de Apache service: name: apache2 state: started enabled: yes when: ansible_os_family == "Debian"
Explicación del Playbook
name: Instalar y configurar Apache
: Nombre del play.hosts: webservers
: Aplica el play al grupo de hostswebservers
.become: yes
: Ejecuta las tareas con privilegios elevados.tasks
: Lista de tareas a ejecutar.name: Instalar Apache
: Nombre de la tarea.apt
: Módulo de Ansible para gestionar paquetes en sistemas basados en Debian.name: apache2
: Nombre del paquete a instalar.state: present
: Asegura que el paquete esté instalado.
when: ansible_os_family == "Debian"
: Condición para ejecutar la tarea solo en sistemas Debian.name: Iniciar el servicio de Apache
: Nombre de la tarea.service
: Módulo de Ansible para gestionar servicios.name: apache2
: Nombre del servicio.state: started
: Asegura que el servicio esté iniciado.enabled: yes
: Asegura que el servicio se inicie al arrancar el sistema.
when: ansible_os_family == "Debian"
: Condición para ejecutar la tarea solo en sistemas Debian.
Ejecutando el Playbook
Para ejecutar el playbook, utiliza el siguiente comando:
Verificación
Después de ejecutar el playbook, puedes verificar que Apache está instalado y ejecutándose en los hosts especificados. Puedes hacerlo accediendo a la dirección IP de los hosts en un navegador web o utilizando el siguiente comando:
Ejercicio Práctico
Ejercicio
Escribe un playbook que haga lo siguiente:
- Instale el paquete
nginx
en un grupo de hosts llamadowebservers
. - Asegure que el servicio
nginx
esté iniciado y habilitado para arrancar al inicio del sistema.
Solución
Crea un archivo llamado install_nginx.yml
con el siguiente contenido:
--- - name: Instalar y configurar Nginx hosts: webservers become: yes tasks: - name: Instalar Nginx apt: name: nginx state: present when: ansible_os_family == "Debian" - name: Iniciar el servicio de Nginx service: name: nginx state: started enabled: yes when: ansible_os_family == "Debian"
Ejecuta el playbook con el siguiente comando:
Conclusión
En este tema, has aprendido a escribir y ejecutar un playbook de Ansible. Ahora sabes cómo definir tareas y aplicarlas a grupos de hosts. En el próximo tema, profundizaremos en la estructura de los playbooks y exploraremos cómo utilizar variables y hechos para hacer tus playbooks más dinámicos y reutilizables.
Ansible: De Principiante a Avanzado
Módulo 1: Introducción a Ansible
Módulo 2: Conceptos Básicos de Ansible
Módulo 3: Playbooks
- Introducción a los Playbooks
- Escribiendo tu Primer Playbook
- Estructura del Playbook
- Variables y Hechos
- Condicionales y Bucles
Módulo 4: Roles
Módulo 5: Técnicas Avanzadas de Playbook
Módulo 6: Ansible Galaxy
Módulo 7: Ansible Tower
- Introducción a Ansible Tower
- Instalando Ansible Tower
- Usando Ansible Tower
- Gestionando Proyectos e Inventarios
Módulo 8: Ansible para DevOps
Módulo 9: Mejores Prácticas de Ansible
- Organización del Código
- Mejores Prácticas de Seguridad
- Ajuste de Rendimiento
- Pruebas de Código Ansible