Volver a la página principal
lunes 7 octubre 2024
22

Cómo usar Playbooks en Ansible

Un Playbook en Ansible es un archivo escrito en YAML que define la automatización de tareas en uno o varios sistemas. Los playbooks permiten describir configuraciones, implementar aplicaciones y coordinar múltiples tareas de forma estructurada. Cada playbook está compuesto por "plays" que indican qué hosts gestionar y qué tareas ejecutar en esos hosts.

¿Cómo se estructura un Playbook en Ansible?

Un playbook se organiza de la siguiente manera:

1. Hosts: Define los servidores o grupos de servidores donde se aplicarán las tareas.

2. Tareas (tasks): Son las acciones específicas que Ansible debe ejecutar en cada host (como instalar paquetes, copiar archivos, reiniciar servicios, etc.).

3. Módulos: Los módulos son funciones específicas que Ansible utiliza para ejecutar tareas (por ejemplo, apt, yum, copy, service).

4. Roles: Permiten organizar las tareas y variables de forma reutilizable y modular.

Estructura básica de un Playbook

Un playbook típico se ve de la siguiente manera:

- name: Configurar un servidor web
  hosts: webservers
  become: yes
  tasks:
    - name: Instalar Nginx
      apt:
        name: nginx
        state: present

    - name: Copiar archivo de configuración
      copy:
        src: ./files/nginx.conf
        dest: /etc/nginx/nginx.conf

    - name: Reiniciar Nginx
      service:
        name: nginx
        state: restarted

Explicación de cada sección:

  • name: Una descripción del play o tarea.
  • hosts: El grupo de hosts o servidores a los que se aplicará el playbook (por ejemplo, webservers).
  • become: Indica si se deben ejecutar las tareas con privilegios de superusuario (sudo).
  • tasks: Una lista de tareas a ejecutar en los hosts.
  • apt, copy, service: Son módulos de Ansible utilizados en cada tarea específica.

Ejemplos de uso

1. Instalación de un paquete en varios servidores:

- name: Instalar Git en todos los servidores
     hosts: all
     become: yes
     tasks:
       - name: Instalar Git
         yum:
           name: git
           state: present

Resultado: El playbook instalará Git en todos los servidores especificados en el archivo de inventario.

2. Desplegar una aplicación web:

- name: Desplegar una aplicación en un grupo de servidores web
     hosts: webservers
     tasks:
       - name: Clonar repositorio desde GitHub
         git:
           repo: 'https://github.com/mi-proyecto/app.git'
           dest: /var/www/app

       - name: Instalar dependencias con npm
         command: npm install
         args:
           chdir: /var/www/app

       - name: Iniciar la aplicación
         systemd:
           name: app
           state: started

Resultado: El playbook clonará el repositorio, instalará dependencias y levantará el servicio de la aplicación en todos los servidores del grupo webservers.

Recomendaciones para crear Playbooks

  • Utiliza nombres descriptivos en las tareas (name).
  • Evita hardcodear rutas y valores; usa variables.
  • Organiza playbooks complejos en *roles* para mejorar la reutilización.
  • Utiliza handlers para gestionar tareas dependientes (por ejemplo, reiniciar servicios tras cambios de configuración).

Referencia oficial

Para más detalles, consulta la documentación oficial de Ansible sobre Playbooks.

Etiquetas:
ansible
Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer