Monitoring d’un playbook Ansible
Ce mois-ci, nous allons consacrer notre article Tech à la surveillance du résultat des playbooks Ansible avec la stack Telegraf / Prometheus / Grafana.
Donnons un peu de contexte :
Dans une infrastructure gérée en mode GitOps, toutes les actions sont pilotées par GIT et un ordonnanceur qui permet de valider et déployer le code ou l’infrastructure. Dans le cas où le référentiel de configuration est géré avec Ansible stocké dans Git, nous allons décrire une méthode de surveillance vous permettant de surveiller la conformité de votre configuration de référence sur un parc de production.
Pour cet exemple, nous allons reprendre un cas simple avec un playbook Ansible qui va gérer des utilisateurs ainsi que leur clef SSH pour se connecter à un serveur, votre imagination permettra de le mettre en application sur des playbook Ansible bien plus complexes.
Dans cet article, nous ne parlerons pas de l’ordonnanceur qui exécute le playbook régulièrement, plusieurs solutions sont possibles : GitLab-CI, Rundeck, CronTab, etc..
1. Le playbook
Le playbook Ansible propose par défaut un log en format YAML qui est très lisible à l’écran, mais un format JSON permettra un traitement du log plus facile. Pour cela le playbook Ansible sera lancé avec la commande suivante pour changer le format du stdout.
Afin d’optimiser le traitement et ne pas polluer les stacks de monitoring avec des valeurs non nécessaires, il est préférable d’extraire uniquement le résumé du résultat Ansible avec les codes de sortie : OK, CHANGED, UNREACHABLE, FAILED, SKIPPED.
2. Exposer le résultat du fichier JSON
La machine qui exécute le playbook va présenter ce fichier json pour que la métrique puisse être exploitée.
Pour aller au plus simple, nous avons choisi d’utiliser l’exporteur Prometheus disponible dans Telegraf qui permet nativement d’interpréter les fichiers JSON et de présenter les clefs et les valeurs au format Prometheus.
Une fois en place, il est possible de vérifier le fonctionnement de l’exporteur avec un curl :
3. Collecter et historiser les valeurs
Pour effectuer cette tâche, nous allons simplement utiliser l’incontournable Prometheus qui est devenu un standard pour le monitoring et la métrologie des infrastructures modernes. Nous n’allons pas entrer dans le détails de l’implémentation de Prometheus dans cet article, mais juste donner un exemple de configuration.
Le rôle de Prometheus est de conserver l’historique des valeurs collectées.
4. Mettre en forme les valeurs
Pour la présentation des métriques, l’utilisation de Grafana permet d’avoir une représentation visuelle des données collectées dans Prometheus. Pour cela, il suffit de connecter la source de données Prometheus et de créer un Dashboard avec les valeurs collectées.
Conclusion
Pour conclure, une fois cette solution implémentée, vous serez capable de superviser la conformité de votre configuration de référence pour prévenir de toute dérive, comme des actions manuelles sur les plateformes, la défaillance de nouvelle configuration liée à la sécurité, ou des changements non appliqués sur l’intégralité du parc.
Votre imagination permettra sûrement bien d’autres applications.