Parser les commandes shell Ansible avec JC
Il faut aussi désormais surveiller le travail de la communauté Ansible, sinon on passe à côté de pépites qui vous simplifie le travail.
Il existe bien des cas où le module ansible n’existe pas et qui nous oblige à utiliser le module shell. Mais quelle prise de tête que de parser le retour, si la sortie au format json n’existe pas. JC va vous sauver.
Jc est outil écrit en python qui se charge de parser le retour d’une trentaine de commandes shell dont arp, crontab, dif, date, df, systemctl, … mais aussi de parser des fichiers csv, xml, ini, yaml
Installation de JC
Dans l’environnement virtuel où vous avez installé ansible il suffit de :
Utilisation de jc en ligne de commande
Pour tester jc il suffit de lancer une simple commande et de la piper avec jc suivi du parser + un petit jq pour formater le json.
Exemple ping :
Pour afficher la liste des parsers disponibles un simple jc -h
.
Utiliser JC avec Ansible
Dans la collection de la communauté Ansible, il existe toute une série de filtres qui viennent compléter ceux qui sont disponibles par défaut avec Ansible. Dont notre jc
Voici un exemple de playbook :
Vous remarquez l’utilisation du filtre jc dans le set_fact
: ip: "{{ result.stdout | community.general.jc('dig') }}"
? Cool. Voyons la sortie du playbook :
On a récupéré tout simplement l’ip du domaine example.com. Finis les awks, cut, pipe …
Merci JC !
Source : JC ↗