Utiliser MySQL comme inventaire Ansible
**Parfois votre CMDB peut être stocké dans une base de données comme Mysql. C’est mon cas où un script python utilisant les résultats de la command nmap et des gather_facts d’Ansible stocke les machines dans la base mysql. **
L’inventaire dynamique classique consiste à obtenir la liste des hôtes via un script externe et à la renvoyer à la commande ansible dans le format requis.
Ici on va utiliser deux astuces qui sont :
- la commande add_host permettant d’ajouter une machine à un groupe dynamiquement ;
- la possibilité de définir plusieurs sections avec différents groupes cible ;
Récupération des machines stockés dans votre base mysql
La première partie du playbook est un simple appel à la commande mysql via le module shell. Vous aurez juste
à modifier les champs entre < >
pour utiliser ce playbook. Cette requête vient récupérer les adresses IP qui sont
ensuite stockées dans une variable nommée stuff
Création du groupe
Toujours dans lé même section du playbook on va utiliser la commande add_host pour constituer le groupe qui sera ensuite utilisé dans la seconde section du playbook.
Utilisation du groupe dans la seconde section du playbook
Maintenant il suffit juste d’ajouter une nouvelle section à votre playbook utilisant cette fois le groupe running_hosts. Ici je vais créer un fichier de facts persos (via un template jinja) qui seront récupérés par la collecte des facts si elle est activée.
Le code complet :
Le fichier jinja :
Voilà vous pouvez je suis sûr que vous trouverez des use-case utilisant cette technique.
La suite de la formation ansible dans de prochains billets.