Observabilité des runs
Savoir qu'un playbook a réussi ne suffit pas en production. Qui l'a lancé ? Quelles tâches ont changé quelque chose ? Combien de temps ? Sans observabilité, diagnostiquer un incident après-coup revient à reconstituer un puzzle incomplet.
ARA Records Ansible
ARA enregistre automatiquement tous les runs Ansible via un callback plugin, sans modifier les playbooks.
pip install ara[server]
ara-manage migrate
ara-manage runserver 0.0.0.0:9191[defaults]
callbacks_enabled = ara.plugins.callback.ara_default
[ara]
api_client = http
api_server = http://localhost:9191L'interface ARA expose : historique des runs, détail par tâche, diff des fichiers, timeline par hôte.
Callback plugins natifs
[defaults]
callbacks_enabled = profile_tasks, timer, yamlprofile_tasks: durée par tâche, triétimer: durée totalejson: sortie JSON pour parsing externejunit: XML JUnit pour intégration CI
Callback plugin custom : alertes Slack
# callback_plugins/notify_slack.py
from ansible.plugins.callback import CallbackBase
import urllib.request, json
class CallbackModule(CallbackBase):
CALLBACK_VERSION = 2.0
CALLBACK_TYPE = "notification"
CALLBACK_NAME = "notify_slack"
def v2_playbook_on_stats(self, stats):
failures = {h for h in stats.processed if stats.failures.get(h)}
if failures:
self._notify(f":red_circle: Échec sur : {', '.join(failures)}")
def _notify(self, msg):
payload = json.dumps({"text": msg}).encode()
urllib.request.urlopen(urllib.request.Request(
self.get_option("webhook_url"), data=payload,
headers={"Content-Type": "application/json"}))AWX comme observabilité intégrée
Si AWX est déjà en place, pas besoin d'ARA : AWX stocke l'historique complet dans PostgreSQL avec une API dédiée.
# Derniers jobs
curl -s -H "Authorization: Bearer TOKEN" "https://awx.example.com/api/v2/jobs/?order_by=-started&page_size=20"
# Stdout d'un job
curl -s -H "Authorization: Bearer TOKEN" "https://awx.example.com/api/v2/jobs/42/stdout/?format=txt"Métriques Prometheus
AWX expose des métriques Prometheus nativement sur /api/v2/metrics/. Pour Ansible CLI sans AWX, un callback plugin peut pousser des métriques vers un Pushgateway. Les métriques pertinentes : durée par playbook, taux de changed/failed par hôte, taux de succès par environnement.