web-dev-qa-db-fra.com

ansible - vérifier si le fichier existe sur une machine * locale *

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
30
Bruce P