Disons que ce même problème peux survenir quel que soit l'outil de configuration management utilisé.
Ansible rends ce phénomène plus fréquent et visible, car le mécanisme de notifications (via les handlers) est très spécialisé et pas utilisable en toutes circonstances (par opposition au notify/subscribe de puppet, qui permet de coordonner n'importes quelles actions).
On doit souvent recourir à des enchainements register (ou set_fact+lookup, etc) sur une première task, puis "when: lavariableregistred[.something]" dans une seconde task, ce qui n'est évidement pas génial pour le --check.
Un autre aspect qui rends Ansible un peu plus frustre pour les tests (mais je l'aime pour d'autres raisons ;), par opposition à Puppet
Un autre aspect où Puppet se montre moins frustre pour les tests, c'est la notion de catalogue: l'état complet du système cible (tout ce qui est "à vérifier et à faire" avec Puppet) est construit avant toute connexion sur la machine cible (et avant execution par l'agent). On dispose d'un paquet d'outils permettant de se brancher sur la sortie du catalogue, pour faire du test unitaire et vérifier tout ce que Puppet compte faire, sans jamais avoir besoin de la machine cible.
Cela dit j'aime beaucoup Ansible sur d'autres aspects que les tests.
En particulier pour l'aspect dynamique, la souplesse et le controle qu'il offre sur le flux d'execution et les ensembles de machines: par ex. avec serial, delegate_to, local_action, group_by, add_host, les inventaires dynamiques, ...
[^] # Re: Agentless, danger
Posté par herodiade . En réponse au journal Déploiement et automatisation avec Ansible - partie 1. Évalué à 1.
Disons que ce même problème peux survenir quel que soit l'outil de configuration management utilisé.
Ansible rends ce phénomène plus fréquent et visible, car le mécanisme de notifications (via les handlers) est très spécialisé et pas utilisable en toutes circonstances (par opposition au notify/subscribe de puppet, qui permet de coordonner n'importes quelles actions).
On doit souvent recourir à des enchainements register (ou set_fact+lookup, etc) sur une première task, puis "when: lavariableregistred[.something]" dans une seconde task, ce qui n'est évidement pas génial pour le --check.
Un autre aspect qui rends Ansible un peu plus frustre pour les tests (mais je l'aime pour d'autres raisons ;), par opposition à Puppet
Un autre aspect où Puppet se montre moins frustre pour les tests, c'est la notion de catalogue: l'état complet du système cible (tout ce qui est "à vérifier et à faire" avec Puppet) est construit avant toute connexion sur la machine cible (et avant execution par l'agent). On dispose d'un paquet d'outils permettant de se brancher sur la sortie du catalogue, pour faire du test unitaire et vérifier tout ce que Puppet compte faire, sans jamais avoir besoin de la machine cible.
Cela dit j'aime beaucoup Ansible sur d'autres aspects que les tests.
En particulier pour l'aspect dynamique, la souplesse et le controle qu'il offre sur le flux d'execution et les ensembles de machines: par ex. avec serial, delegate_to, local_action, group_by, add_host, les inventaires dynamiques, ...