J'ai une situation où je dois vérifier l'état d'un fichier sur la machine locale (celle où j'appellerai ansible-playbook ...
).
Si un fichier créé par l'utilisateur existe, il doit être copié sur les hôtes distants. S'il n'existe pas, aucun des hôtes distants n'en a besoin.
Je sais que j'ai fait des choses comme:
- name: Check for ~/.blah/config
stat: path=/home/ubuntu/.blah/config
register: stat_blah_config
- name: Do something with blah config
Shell: ~/do_something_with_config.sh
when: stat_aws_config.stat.exists == true
Mais cela ne fonctionnera que si le fichier existe à distance. Existe-t-il un moyen d'exécuter conditionnellement une tâche (comme une copie) uniquement si le fichier existe localement (faire exécuter stat
dans la première tâche localement au lieu de à distance), et échouer silencieusement si ce ne est pas? Je ne sais pas si ansible a ce genre de fonctionnalité, mais ce serait utile.
La délégation des tâches à l'hôte local via l'instruction local_action devrait faire ce que vous voulez:
- name: Check for ~/.blah/config
local_action: stat path=/home/ubuntu/.blah/config
register: stat_blah_config