Lab08 Ansible III

Objetivo

Actualizar todos los host Linux o los que queramos utilizando un playbook con Ansible.

Requisitos

  • Tener instalado y configurado correctamente Ansible.
  • Poder ejecutar Ansible contra los hosts Linux del laboratorio.

Mapa de red

+----------+      +--------+           +----------+
|          |      |        |           |          |<--> Lan 10.0.0.1/28
|          |      |        |           | Firewall |
| Internet |<---> | Router |<---Wan--->| OPNsense |<--> DMZINT 10.0.0.17/28
|          |      |        |           |          |
|          |      |        |           |          |<--> DMZEXT 10.0.0.33/28
+----------+      +--------+           +----------+

Conceptos

  • Playbook o libro de jugadas: Un playbook es un archivo YAML (.yml o .yaml) que tiene un conjunto de tareas (tasks) que se ejecutan en los hosts indicados del archivo de inventario. Las tareas llaman a los módulos que se ejecutan en el orden en el que se escriben.
  • Módulo, task pluggins o library plugglins: librería de acciones disponibles en el software, que pueden ser usadas desde una línea de comandos o playbook. El usuario tiene la posibilidad de recurrir a un solo módulo por tarea o varios módulos diferentes en un playbook.

Playbook actualización de paqutes deb

---
- hosts: debian,ubuntu # hosts o grupos del inventario donde se aplica el playbook
  tasks:
    - name: Actualizando cache y paquetes # Nombre de la tarea
      register: updatesys
      apt: 
        name: "*" # Nombre del paquete, en este caso todos
        state: latest # Versión del paquete, la ultima
        update_cache: yes # Actualizar la cache
    - name: Borrarando paquetes que ya no son necesarios # Nombre de la tarea
      apt:
        autoclean: yes
    - name: Borrarando dependencias que ya no son necesarias # Nombre de la tarea
      apt:
        autoremove: yes
...                            

Playbook actualización de paqutes rpm

---
- hosts: fedora,rocky,alma # hosts o grupos del inventario donde se aplica el playbook
  tasks:
    - name: Actualizando cache y paquetes # Nombre de la tarea
      register: updatesys
      dnf: 
        name: "*" # Nombre del paquete, en este caso todos
        state: latest # Versión del paquete, la ultima
        update_cache: yes # Actualizar la cache
    - name: Borrarando dependencias que ya no son necesarias # Nombre de la tarea
      dnf:
        autoremove: yes
...                            

Utilizando los playbooks.

  • Comprobar la sintaxis
ansible-playbook NOMBRE_DEL_PLAYBOOK.yml --syntax-check
  • Ejecutar en modo check, no realiza cambios
ansible-playbook NOMBRE_DEL_PLAYBOOK.yml -C
  • Ejecutar
ansible-playbook NOMBRE_DEL_PLAYBOOK.yml