I'm using the following task to check if a host is reachable (after a 
reboot):

- name: Wait for host to come back
  wait_for:
    host: '{{ ansible_host }}'
    port: 22
    state: started
    delay: 30
    timeout: 300
  delegate_to: localhost
  check_mode: False

This works fine for hosts that have ansible_host explicitly set, but for 
hosts that don't set ansible_host it's set to "localhost". As far as I 
understand ansible_host is the correct variable to use in this situation. 
As it should contain the hostname or IP address where the host is reachable.

To clarify the issue, use the following example inventory:

host-a
host-b ansible_host=10.1.2.3

In this case, in the above task ansible_host is set to localhost for host-a 
but to 10.1.2.3 for host-b. This leads to wrong behavior as it would check 
port 22 on localhost for host-a. I could not find any variable that would 
contain the equivalent of ansible_host in a task without delegate_to for 
host-a.

Is this behavior expected or a bug in Ansible? Is there a variable I could 
use instead to get the connection target in case the task would be run 
without delegate_to? I'm currently using the following workaround, but this 
is really ugly and breaks if the Ansible behavior changes at some point in 
the future:

- name: Wait for host to come back
  wait_for:
    # ansible_host with delegate_to is weird. It's set to localhost if it 
was not set explicitly before.
    host: '{{ (ansible_host == "localhost") | ternary(inventory_hostname, 
ansible_host) }}'
    port: 22
    state: started
    delay: 30
    timeout: 300
  delegate_to: localhost
  check_mode: False


I found these github issues wich might be related:
https://github.com/ansible/ansible/issues/30630
https://github.com/ansible/ansible/issues/14958

Regards,
Gaudenz

-- 
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 [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/8328957d-9830-4d44-b0de-17f7e1edf404%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to