Below is my playbook

- name: Play 1.5 - Check each target
  hosts: all_hosts
  ignore_unreachable: yes
  ignore_errors: yes
  gather_facts: true

  tasks:

   - raw: "echo {{ inventory_hostname }} is UNREACHABLE"
     delegate_to: localhost
     when: <Need help with the when condition here>

I need help with the when condition in the above playbook.

When i run the play against unreachable hosts the debug output clearly 
shows that the output is in JSON format and there must a variable that 
captures inventory_host connection status

Please see the output below:

TASK [Gathering Facts] 
*************************************************************************************************************************************************
task path: /app/Ansible/playbook/check/check.yml:55
<10.9.80.111> Attempting python interpreter discovery
<10.9.80.111> ESTABLISH SSH CONNECTION FOR USER: root
<10.9.80.111> SSH: EXEC ssh -o 
'IdentityFile="/app/automation/ssh_keys/id_rsa"' -o 
KbdInteractiveAuthentication=no -o 
PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey 
-o PasswordAuthentication=no -o 'User="root"' -o ConnectTimeout=10 -o 
StrictHostKeyChecking=no 10.9.80.111 '/bin/sh -c '"'"'echo PLATFORM; uname; 
echo FOUND; command -v '"'"'"'"'"'"'"'"'/usr/bin/python'"'"'"'"'"'"'"'"'; 
command -v '"'"'"'"'"'"'"'"'python3.7'"'"'"'"'"'"'"'"'; command -v 
'"'"'"'"'"'"'"'"'python3.6'"'"'"'"'"'"'"'"'; command -v 
'"'"'"'"'"'"'"'"'python3.5'"'"'"'"'"'"'"'"'; command -v 
'"'"'"'"'"'"'"'"'python2.7'"'"'"'"'"'"'"'"'; command -v 
'"'"'"'"'"'"'"'"'python2.6'"'"'"'"'"'"'"'"'; command -v 
'"'"'"'"'"'"'"'"'/usr/libexec/platform-python'"'"'"'"'"'"'"'"'; command -v 
'"'"'"'"'"'"'"'"'/usr/bin/python3'"'"'"'"'"'"'"'"'; command -v 
'"'"'"'"'"'"'"'"'python'"'"'"'"'"'"'"'"'; echo ENDFOUND && sleep 0'"'"''
<10.9.80.111> (255, '', 'ssh: connect to host 10.9.80.111 port 22: 
Connection timed out\r\n')
[WARNING]: Unhandled error in Python interpreter discovery for host 
10.9.80.111: Failed to connect to the host via ssh: ssh: connect to host 
10.9.80.111 port 22:
Connection timed out

Using module file 
/usr/lib/python2.7/site-packages/ansible/modules/system/setup.py
Pipelining is enabled.
<10.9.80.111> ESTABLISH SSH CONNECTION FOR USER: root
<10.9.80.111> SSH: EXEC ssh -o 
'IdentityFile="/app/axmw/misc_automation/ssh_keys/axmw_id_rsa"' -o 
KbdInteractiveAuthentication=no -o 
PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey 
-o PasswordAuthentication=no -o 'User="root"' -o ConnectTimeout=10 -o 
StrictHostKeyChecking=no 10.9.80.111 '/bin/sh -c '"'"'/usr/bin/python && 
sleep 0'"'"''
fatal: [10.9.80.111]: UNREACHABLE! => {
    "changed": false,
    "msg": "Data could not be sent to remote host \"10.9.80.111\". Make 
sure this host can be reached over ssh: ssh: connect to host 10.9.80.111 
port 22: Connection timed out\r\n",
    "skip_reason": "Host 10.9.80.111 is unreachable",
    "unreachable": true
}
META: ran handlers 
>From the output above i want to get the variable that has the below values:

fatal: [10.9.80.111]: UNREACHABLE! => {
    "changed": false,
    "msg": "Data could not be sent to remote host \"10.9.80.111\". Make 
sure this host can be reached over ssh: ssh: connect to host 10.9.80.111 
port 22: Connection timed out\r\n",
    "skip_reason": "Host 10.9.80.111 is unreachable",
    "unreachable": true

Thus, I wish to capture the unreachable": true status from there.

Can someone please guide ?

-- 
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 view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/dd3ce383-b066-46a6-89c6-72ab587d81f4n%40googlegroups.com.

Reply via email to