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:

[webservers]
192.168.1.10
192.168.1.11

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 hosts webservers.
  • 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:

ansible-playbook -i hosts install_apache.yml

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:

curl http://192.168.1.10

Ejercicio Práctico

Ejercicio

Escribe un playbook que haga lo siguiente:

  1. Instale el paquete nginx en un grupo de hosts llamado webservers.
  2. 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:

ansible-playbook -i hosts install_nginx.yml

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.

© Copyright 2024. Todos los derechos reservados