Générer des playbooks Ansible avec ChatGPT
Et voilà après deux semaines de tests, j’ai fini par livrer mon package python permettant de générer des taches ansible assisté par ChatGPT. Je l’ai appelé ansible-aisnippet.
Installation d’ansible-aisnippet
Il s’agit d’un package python. Vous avez donc le choix de l’installer dans votre environnement virtuel, au niveau de votre utilisateur ou encore avec pipx.
Avec pip :
Avec pipx
Pour le mettre à jour :
Utilisation d’ansible-aisnippet
Au préalable, il faut s’enregistrer sur openai ↗ et créer un token.
Une fois le token créé. Vous pouvez soit l’ajouter dans votre .zshrc
ou votre
.bashrc
, soit le définir au lancement de votre shell.
Comme j’ai utilisé typer
pour générer la CLI, la documentation est disponible
ainsi que l’autocomplétion.
Affichage de la documentation :
Generation d’une tache
ansible-aisnippet
peut générer une tache ou plusieurs tâches. Voyons comment
lui demander de créer une tâche. C’est assez simple, il faut utiliser la
commande generate
suivi d’une phrase décrivant la tâche. Attention, il faut
entrer les descriptions en anglais !
ansible-aisnippet
nous propose une tache utilisant le module ansible
command
. Il lance le script et en cas de réussite, il pose le lock. Cela
permet de ne pas relancer cette commande une seconde fois.
Générer plusieurs taches
ansible-aisnippet
peut aussi générer plusieurs taches en se basant sur le
contenu d’un fichier YAML. Ce fichier contient simplement une liste de tâches et
de blocks.
Exemple :
Pour générer un playbook
, il suffit d’ajouter l’option -p
:
Il est possible de demander à écrire le résultat dans un fichier avec l’option -o
.
Fonctionnement
Pour ceux qui ont manqué les deux billets qui ont permis la création de cet outil, je vous renvoie à leur lecture.
En quelques mots. Ansible-aisnippet utilise la librairie gensim
pour
rechercher parmi des snippets fournis la phrase la plus proche de la description
de la tache attendue. Une fois identifié, je demande à chatGPT de générer une
tache en se basant dessus pour respecter la consigne de la tache.
Plus loin
Les résultats sont plutôt sympathiques, mais demandent tout de même d’être relus et corriger avant de les appliquer. De même, si on souhaite utiliser des variables.
Comme cet outil se base sur une liste de templates fournis, pour le moment, je
n’ai mis que ceux de la collection ansible.builtin
. Pourquoi ? Car pour que
les résultats de cet outil soient corrects, il faut que les templates fournis
soient aussi de qualité. Pour le moment 50% des templates fournis ont été
nettoyés des options non obligatoires.
Dans les prochaines versions, je finaliserai cette collection puis j’ajouterai d’autres collections. De même, j’ajouterai la possibilité d’utiliser vos propres collections de templates.
Pour ceux qui veulent m’aider le projet se trouve ici ↗.