Le cours ansible en ligne avance petit à petit car j’ai réalisé un peu plus de 115 vidéos tutoriels pour le moment ( et c’est pas fini 😉 ). Cette formation est disponible en totalité pour les membres vip pour le moment. Mais ces vidéos deviennent disponible publiquement au fur et à mesure des mois et des semaines. Devenir membre permet de soutenir la chaine xavki.
La dernière vidéo publiée s’adresse plutôt aux débutants avec 2 éléments utiles au quotidien dans vos développements ansible : le register et le module stat. J’ai trouvé cela intéressant de les associer car on le fait cela souvent dans la pratique.
Le module stat de ansible
Idéal pour commencer, ce module ansible permet de vérifier notamment l’existence ou non de fichiers ou de répertoires. Mais pas seulement, le module stat s’apparente aux données accessibles via la commande stat sous linux.
Ainsi une commande stat fournie les principales informations fournies par les inodes. On pourrait résumer cela aux metadatas de votre filesystem.
oki@doki ~/playground/centreserver $ ▶ stat deploy.sh
File: deploy.sh
Size: 3710 Blocks: 8 IO Block: 4096 regular file
Device: fd01h/64769d Inode: 11274196 Links: 1
Access: (0755/-rwxr-xr-x) Uid: (1001/ oki) Gid: (1001)
Access: 2021-03-09 15:49:37.803546224 +0100
Modify: 2021-02-09 18:29:07.371956532 +0100
Change: 2021-02-09 18:29:07.371956532 +0100
Birth: -
Je vous propose donc de créer un fichier avec ansible et lancer dessus le mode stat en deuxième task.
- name: création d'un fichier file: path: /tmp/xavki.txt state: touch owner: xavki
puis lançons le module stat :
- name: check avec stat stat: path: /tmp/xavki.txt
Les paramètres de ce module ansible sont :
- path : chemin du fichier ou répertoire
- follow : suivre les liens symboliques
- get_checksum : récupérer la checksum
- checksum_algorithm : type de checksum (md5, etc)
- get_mime: récupération du type de données
Mais une fois que l’on a fait cela on ne dispose pas encore des données collectées par le module. Pour cela nous avons besoin d’utiliser le register.
Le register, un ami pour vos modules
Si on devait résumer le register, on pourrait dire qu’il s’agit d’un créateur de variables. Il permet de récupérer les outputs/sorties des modules. En effet de nombreux modules permettent de récupérer des informations lorsqu’ils sont exécutés. Par exemple, le module ec2 de aws va permettre de récupérer toutes les métadatas de l’instance créée.
Pour le module stat de ansible, il va récupérer les informations du fichier ou du répertoire en question.
Pour l’utiliser c’est très simple, il suffit de rajouter register et le nom de la variable créée qui contiendra le contenu de la sortie. Attention à l’indentation avec ansible, il s’agit de mettre le register au même niveau que le nom du module.
Ainsi nous pourrions avoir une succession de tâches suivantes :
tasks: - name: création d'un fichier file: path: /tmp/xavki.txt state: touch owner: root when: xavki_file is defined - name: check avec stat stat: path: /tmp/xavki.txt register: __fichier_xavki - name: debug debug: var: __fichier_xavki
La première pour la création du fichier.
La seconde pour passer un stat sur le fichier xavki.txt avec le register (création de la variable __fichier_xavki).
Et enfin pour visualiser le contenu de la variable obtenue, nous utilisons le module debug.
Bonne pratique : j’ai pour habitude de préfixer ce type de variables par un double underscore. Cela me permet d’une part de les identifier plus rapidement et d’autres part d’utiliser plus rapidement l’autocomplétion (par exemple dans vscode).
Dans le cas de stat, vous pouvez ensuite parcourir le contenu de cette variable ansible. Ainsi pour utiliser la valeur de stat et de la clef “exists” voici comment faire :
__fichier_xavki.stat.exists
Maintenant nous sommes donc en mesure de vérifier l’existence d’un fichier ou d’un répertoire et de conditionner la tache suivante à cela.
- name: création répertoire xavki file: path: /tmp/xavki state: directory when: __fichier_xavki.stat.exists and xavki_file is defined
Mais je vous invite à vérifier le contenu de l’output en totalité et vous verrez que nous disposons des mêmes éléments que si nous avions lancé la commande linux.
Retrouvez les tutoriels ansible ici et abonnez-vous si vous souhaitez ne pas manquer les prochains articles ou vidéos.