středa 13. listopadu 2024

Zabbix Events to Event-Driven Ansible (EDA vs ansible-rulebook)

Již delší dobu jsem si sem nic nepoznamenal. Ale přišla příležitost si vyzkouset Zabbix a integraci s Event-Driven Ansible webhook v podobě Media Type. Inspirací a podnětem pro mě byl článek na blogu Zabbix.

Nejprve jsem se zaměřil na zprovoznění a seznámení se s EDA serverem, který jsem si zprovoznil pomocí docker compose.

https://github.com/smejdil/zabbix-eda/tree/main/tools/docker

EDA je pěkné klikátko, které má smysl použít jen s AWX nebo RedHat AAP protože neumí použít inventory :-( Tento poznatek byl zklamáním.


 
Narazil jsem na tuto chybu :-(

Rulebook fails with "Playbook has an action run_playbook which needs inventory to be defined"

https://access.redhat.com/solutions/7024714

Root Cause You can only use the run_playbook with ansible-rulebook cli while also specifying inventory. If you want to use the integrated AAP / EDA interactions, you probably are looking for run_job_template which is defined on your AAP controller and created under the correct organization.

No a ještě potvrzení ... ohledně akce run_playbook

run_playbook (only supported with ansible-rulebook CLI)

A tak jsem se tedy vydal cestou ansible-rulebook a vytvořil si Docker kontainer pro vytvoření webhooku na portu 5001, který reaguje na událost akci v podobě ansible playbooku.

- name: Zabbix test rulebook
  hosts: all
  sources:
    - ansible.eda.webhook:
        host: "::"
        port: 5001
    - ansible.eda.webhook:
        host: "0.0.0.0"
        port: 5001
  rules:
    - name: Run playbook for Apache2
      condition: >-
        event.payload.host_groups is select("==","Private/LM.NET/Office") and
        event.payload.event_tags.target is select("==","apache")
      action:
        run_playbook:
          name: playbooks/check-apache.yaml
...




Webhooků s ansible-rulebook si můžu rozjet více v kontainerech pro jednotlivé pojekty a ze Zabbixu to můžu posílat na jednotlivé porty dle akce ktára reaguje třeba jen na tag target:eda, takže je to událostní kolečko snadno realizovatelné.

Je pracné nadefinovat pravidla v rulebooku a napsat opravné playbooky, ale přijde mi to rozumný ucelený rešeni postavené na Ansible, pro fixnutí nějakých služeb, které maji nějaké podivné vlastnosti (třeba i ve Windows) a je nutné je za jistych zjištených okolností fixnout 😊 restartem nebo jiným opatřením.

Pravý Zabbixák mi odpoví nemusíš mít přeci Událostní udělátko, stačí Zabbix Script a Akce co reaguje na Trigger 😊

za me to jisté řešení je

Konec hlášení ...