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

466 views
Skip to first unread message

Rafał Radecki

unread,
Sep 29, 2016, 2:50:27 AM9/29/16
to Ansible Project
Hi All :)

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.

Dick Davies

unread,
Sep 29, 2016, 3:44:28 AM9/29/16
to ansible list
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
> --
> You received this message because you are subscribed to the Google Groups
> "Ansible Project" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to ansible-proje...@googlegroups.com.
> To post to this group, send email to ansible...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/ansible-project/7f384473-2f59-409d-abf2-e3ccb0bf30c9%40googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.

Kai Stian Olstad

unread,
Sep 29, 2016, 7:15:07 AM9/29/16
to ansible...@googlegroups.com
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

--
Kai Stian Olstad
Reply all
Reply to author
Forward
0 new messages