Files
2026-06-09 18:40:21 +02:00

7.4 KiB


title: ARA Records Ansible created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, automation, ansible, reporting, devops, python, django] confidence: high contested: false sources: [https://selfh.st/apps/?tag=Automation, https://github.com/ansible-community/ara]

📊 ARA Records Ansible

Le tableau de bord qui manque à vos playbooks Ansible — enregistre chaque exécution dans une base consultable (SQLite, MySQL ou PostgreSQL) et expose une UI web, une CLI et une API REST pour comprendre ce qui s'est passé en local comme en CI/CD.

📋 Informations Générales

Champ Valeur
Site web ara.recordsansible.org
GitHub ansible-community/ara
License GPL-3.0
Langage Python (70 %), HTML, Django
Étoiles GitHub 2 000
Dernière MAJ 2026-02-24
Catégorie cat-automation

📝 Description

ARA (acronyme récursif pour Ansible Runtime Analysis) est né dans la communauté OpenStack avant de migrer sous l'égide d'ansible-community. Son objectif est simple : palier le déficit d'observabilité d'Ansible en capturant l'intégralité des données générées par chaque playbook et en les rendant consultables.

L'installation est élégante. On installe le plugin de callback ARA au niveau du même interpréteur Python qu'Ansible, et chaque ansible-playbook envoie automatiquement ses résultats vers la base de données ARA — qu'elle soit locale (SQLite, mode le plus simple) ou distante (MySQL/PostgreSQL, pour centraliser les exécutions de plusieurs machines). Quand l'API server tourne, on consulte l'historique complet dans une UI web : durée, hosts affectés, tâches échouées, diff des modifications de fichiers template ou lineinfile, résultats des modules avec leur stdout/stderr complet.

L'un des points forts d'ARA est sa compatibilité universelle. Il fonctionne avec ansible-core, ansible, ansible-pull, ansible-test, ansible-runner, AWX et Automation Controller (Tower), Molecule, Semaphore, et capture les exécutions depuis un terminal local, une VM, un conteneur, un execution environment Ansible Navigator, ou un runner CI/CD (Jenkins, GitLab CI, Rundeck, Zuul).

Pour les équipes qui gèrent des flottes hétérogènes, ARA devient vite indispensable : on remonte les exécutions de plusieurs administrateurs, on a un filtre par hôte, par playbook, par tag, par statut (changed/failed/skipped), et on peut générer des rapports d'incident en partageant simplement l'URL. La CLI (ara playbook list, ara host list) complète l'UI pour les scripteurs.

🚀 Installation

Option 1 : Sans API server (SQLite local — démarrage rapide)

python3 -m pip install --user "ansible" "ara[server]"
export ANSIBLE_CALLBACK_PLUGINS="$(python3 -m ara.setup.callback_plugins)"
ansible-playbook playbook.yml
ara-manage runserver   # http://127.0.0.1:8000

Idéal pour tester ou pour un usage mono-machine.

Option 2 : Docker Compose avec API server centralisé

# docker-compose.yml
services:
  ara-api:
    image: docker.io/recordsansible/ara-api:latest
    container_name: ara-api
    restart: unless-stopped
    environment:
      - ARA_BASE_DIR=/opt/ara
      - DJANGO_SETTINGS_MODULE=ara.server.settings
      - ARA_ALLOWED_HOSTS=ara.example.com
    volumes:
      - ./ara-data:/opt/ara
    ports:
      - "8000:8000"

  postgres:
    image: postgres:16-alpine
    container_name: ara-db
    restart: unless-stopped
    environment:
      - POSTGRES_DB=ara
      - POSTGRES_USER=ara
      - POSTGRES_PASSWORD=***    volumes:
      - ara-db:/var/lib/postgresql/data

volumes:
  ara-db:

Côté client (chaque poste qui exécute Ansible), configurer l'envoi vers l'API :

pip install ansible ara
export ANSIBLE_CALLBACK_PLUGINS="$(python3 -m ara.setup.callback_plugins)"
export ARA_API_CLIENT=http
export ARA_API_SERVER=https://ara.example.com
ansible-playbook playbook.yml

Option 3 : Podman

L'image quay.io/recordsansible/ara-api est l'équivalent officiel pour les utilisateurs Podman/rhcos.

⚙️ Configuration

  1. Authentification API : activer un token ou un reverse proxy SSO (app-authelia) pour restreindre l'accès à l'UI.
  2. Base PostgreSQL : en production, passer à PostgreSQL via ARA_DATABASE_ENGINE=django.db.backends.postgresql et variables d'environnement associées.
  3. Playbook filtering : configurer ignore_playbook_parameters et ignore_files pour exclure les données sensibles (mots de passe passés en extra-vars).
  4. Rétention : configurer un cron qui purge les playbooks de plus de X jours pour limiter la croissance de la base.
  5. AWX/Controller : ARA est un callback plugin ; l'activer au niveau du AWX Project ou de l'organisation pour centraliser les exécutions de tous les utilisateurs.
  6. Performance tuning : désactiver l'enregistrement des modules verbeux (command, shell) via ARA_RECORD_TIMING et ARA_RECORD_OUTPUT si la base gonfle trop.

🔄 Alternatives

Open Source

  • Ansible Tower / AWX — A sa propre UI, mais focalisée orchestration, pas reporting détaillé par tâche
  • app-semaphore-ui — UI web pour Ansible, sans le niveau de détail d'ARA
  • app-rundeck — Orchestration de jobs multi-outils, peut piloter Ansible
  • Ansible-cmdb — Génère des rapports HTML statiques, pas de base live

Propriétaires (ce qu'ARA remplace)

  • Ansible Automation Platform (AAP) — L'offre Red Hat inclut du reporting, mais payante (et 100% upstream open)
  • Datadog Ansible Integration — Corrélation avec APM/métriques, facturé à l'ingestion
  • Splunk + Ansible Add-on — Très puissant mais infrastructure lourde

🔐 Sécurité

  • 🔐 Activer l'authentification API avant toute exposition Internet (token, Basic Auth, ou SSO via reverse proxy)
  • ⚠️ ARA enregistre tout le stdout/stderr des tâches : si un playbook affiche un mot de passe (Ansible ne le devrait pas, mais...), il sera dans la base — utiliser no_log: true sur les tâches sensibles
  • 🛡️ HTTPS obligatoire (app-traefik, app-caddy) avec HSTS et ALLOWED_HOSTS correctement configuré
  • 🔑 Les tokens d'API doivent être rotés régulièrement
  • 🗄️ Chiffrer la base PostgreSQL au repos
  • 📜 Purger régulièrement les exécutions pour limiter l'exposition de données
  • 🚨 Mettre à jour régulièrement : pip install -U ara pour bénéficier des correctifs

📚 Ressources

Pages Liées