ICM / icm / Event-Driven Ansible

Event-Driven Ansible

16 mayo 2023 | Vlad Erokhin

En octubre de 2022, en AnsibleFest, la empresa RedHat anunció su nueva solución de automatización llamada Event-Driven Ansible (EDA). Hasta ahora, considerábamos Ansible como un conjunto de instrucciones (playbooks o roles), donde se describía qué hacer y en qué orden, y se ejecutaba manualmente ese playbook/role. Ahora, se abre la posibilidad de automatizar la ejecución de playbooks según ciertas condiciones (if-then). Por ejemplo, una condición podría ser la inaccesibilidad de algún servicio o una solicitud de soporte técnico para restablecer una contraseña. Cuando ocurre un evento como este, Ansible automáticamente ejecuta un escenario específico, como reiniciar el servicio inaccesible o restablecer la contraseña del usuario.

Vamos a ver cómo funciona esto con más detalle:

Como fuente de información (source), suelen actuar las herramientas de monitorización de los proveedores de software que proporcionan eventos. En particular, se trata de soluciones de empresas como Prometheus, Sensu, Red Hat Solutions y Kafka, para las que ya hay soporte de EDA. En primer lugar, se trata de eventos del tipo «falla».

Luego, Event-Driven Ansible, utilizando las reglas (rules) descritas en los Ansible Rules Books, decide qué acciones (actions) deben ejecutarse, por ejemplo, ejecutar un playbook. Los Ansible Rules Books son archivos YAML al igual que los Ansible Playbooks, lo que permite trabajar con ellos de manera segura y rápida (por supuesto, si se tiene experiencia en trabajar con playbooks tradicionales), pero contienen un conjunto de reglas en forma de código If-this-then-that.

Aquí hay un ejemplo simple de Ansible Rules Book que maneja eventos del Alertmanager:

---
- name: Automatic Remediation of a webserver
  hosts: all
  sources:
    - name: listen for alerts
      ansible.eda.alertmanager:
        host: 0.0.0.0
        port: 8000
  rules:
    - name: restart web server
      condition: event.alert.labels.job == "fastapi" and event.alert.status == "firing"
      action:
        run_playbook:
          name: ansible.eda.start_app

Este ejemplo configura un webhook para recibir eventos de alertmanager y luego coincide con eventos donde la alerta de trabajo fastapi tiene un estado de firing. Esto ejecuta un playbook ansible.eda.start_app que remediará el problema.

En resumen, Event-Driven Ansible es una nueva forma de mejorar y expandir la automatización. Mejorar la velocidad y la agilidad de TI, al tiempo que permite la consistencia y la resiliencia. Es decir, EDA es una función extendida de Ansible que permite automatizar tareas y reaccionar automáticamente a eventos específicos, reduciendo la intervención humana, aumentando la eficiencia y mejorando la velocidad de respuesta.

Actualmente, esta solución está disponible como versión preliminar para desarrolladores y es parte de la plataforma de automatización Ansible. Puede dejar una solicitud para probar EDA en el sitio web oficial de Red Hat.

_____________

Si está buscando formas de automatizar los procesos de TI en su empresa, en ICM siempre estamos dispuestos a ayudarlo en su camino hacia la mejora de la eficiencia y la resiliencia de sus servicios.