Salut,

Mes deux sous (avec un peu de retard) à propos de Ansible de la part de quelqu'un qui commence à s'y mettre en 2025 (sans avoir utilisé une autre solution avant).

Je suis impressionné par les limitations et les bugs. Il y a vraiment des choses élémentaires qui manquent et je ne comprends pas comment ça peut être utilisé à large échelle. Ce matin j'ai voulu faire un playbook pour réduire un volume logique LVM et je découvre que pour trouver sa taille, ansible_lvm.lvs est tout pété : https://github.com/ansible/ansible/issues/85632


Pas mal :), ceci dit je n’utilise pas lvm…. donc jamais vu… 

Autre problème également : c'est « sans agent » mais complètement dépendant de la version de Python sur les hôtes donc les versions d'Ansible récentes ne peuvent pas gérer des versions d'OS un peu vieilles mais encore sous maintenance (exemple : RHEL 8) : https://www.reddit.com/r/ansible/comments/1d9pfhf/dnf_redhat8_rocky_8_not_compatible_with/

Ca et le fait qu’on ait besoin d’avoir une clef ssh + sudo pour faire tourner le bouzin, je ne trouve pas ça ultra chouppi…
Comparé a la méthode
pkg install puppet
puppet agent —test

Dans un script au boot pour faire « coucou puppetserver je suis le serveur blah, t’as quelque chose a me donner à configurer ».
Truc que je fais dans le /etc/rc.local d’un freebsd ou dans le post install d’un kickstart (oui j’ai utilisé des redhat… quand on me forcais a utiliser du linux).

Et enfin pour moi le plus gros problème c'est les filtres Jinja pour traiter les données qui nous rappellent les heures les plus sombres du PowerShell et ses one-liners de 3 km de long. Tu veux trouver le prochain unitNumber dispo pour ajouter un disque à une VM VMware ? Pas de problème : unitNumber: "{{ diskOutput.guest_disk_facts.values() |selectattr('controller_key','equalto',(controllerKey | int))|map(attribute='unit_number')| list | sort | last |int +1 }} »

Ah… Jinja… Comment dire… Ah oui… pourquoi faire simple alors qu’on peux faire compliqué… Un moment le playbook est tellement infect qu’on ne comprends plus rien.
Je suis comme certains dino, un bon script shell bien blindé marchera probablement mieux qu’une centrale nucléaire en python.

Moralité je l'utilise car ça fait une partie du boulot mais je vais continuer à lancer des scripts avec le module « command » pour utiliser des scripts Python ou Bash qui feront ça en quelques lignes plutôt que de faire des pages et des pages de playbooks en YAML pour faire des tests élémentaires. Je songe même à encoder certaines sorties et les envoyer à des scripts pour traitement plutôt que de le faire en Jinja.


+1

/Xavier


Xavier BEAUDOUIN
SiamNok Ltd - Smart Solutions for Koh Samui
https://siamnok.co.th/
X: @SiamNokCoTh