Set fact on all hosts if a directory is present on one of the hosts.

Hi All :slight_smile:

I am currently trying to find a way to set a variable/fact on all hosts in case a directory for a service will already exist on one of the play’s hosts. Basically:

check if dir exists on all hosts and set service_home_dir_status on every host

  • name: check if service home dir already exists
    stat:
    path: “{{ service_home_dir }}”
    register: service_home_dir_status

fail if the above dir already exists

  • name: fail if service home dir already exists
    fail:
    msg: “Home directory for service {{ service_home_dir }} already exists. Please check the situation!”
    when: service_home_dir_status.stat.isdir is defined and service_home_dir_status.stat.isdir

The problem with above code is that if for example I have a group of hosts: host1, host2, host3 and on host1 the directory already exists the second step will only fail on host1 and succeed on host2 and host3.
Is there a way to maybe set a fact for all hosts in between these tasks if the directory already exists on one of them?

Thanks!

BR,
Rafal.

If you set a fact on a specific host you'll be able to look that up
via hostvars from anywhere:

   http://docs.ansible.com/ansible/set_fact_module.html

To me it sound like you are trying to abort the play if one host fails,
if so you could use "any_errors_fatal: true" in the playbook.

https://docs.ansible.com/ansible/playbooks_error_handling.html#aborting-the-play