Here is my playbook having three tasks:
- name: Play 2- Configure Source nodes
hosts: all_hosts
vars:
ansible_ssh_extra_args: -o StrictHostKeyChecking=no -o ConnectTimeout=8 -o ServerAliveInterval=50
ansible_ssh_private_key_file: /app/misc_automation/ssh_keys/id_rsa
gather_facts: false
tasks:
- name: Get Process Dump for tomcat on non-Solaris
ignore_errors: yes
block:
- raw: ps -ef | grep java | grep -i tomcat | grep -v grep
ignore_errors: yes
register: tomjavadump
- raw: ps -ef | grep java | grep -i tomcat | grep -v grep | wc -l
ignore_errors: yes
register: tomjavadumpcount
- raw: "echo <tr><td>{{ inventory_hostname }}</td><</tr>"
delegate_to: localhost
when: tomjavadump.rc == 0 and patchthistomcat is undefined
I ran the above playbook in debug mode and the exact same ssh connection works for the two tasks but fails for the first task as seen in the debug output below:
TASK [raw] *************************************************************************************************************************************************************
task path: /app/Ansible/playbook/check.yml:1260
<10.0.0.211> ESTABLISH SSH CONNECTION FOR USER: root
<10.0.0.211> SSH: EXEC ssh -o 'IdentityFile="/app/misc_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 -o ConnectTimeout=8 -o ServerAliveInterval=50 10.0.0.211 'ps -ef | grep java | grep -i tomcat | grep -v grep'
<10.0.0.211> (1, '', '')
<10.0.0.211> Failed to connect to the host via ssh:
fatal: [10.0.0.211]: FAILED! => {
"changed": true,
"msg": "non-zero return code",
"rc": 1,
"stderr": "",
"stderr_lines": [],
"stdout": "",
"stdout_lines": []
}
...ignoring
TASK [raw] *************************************************************************************************************************************************************
task path: /app/Ansible/playbook/check.yml:1267
<10.0.0.211> ESTABLISH SSH CONNECTION FOR USER: root
<10.0.0.211> SSH: EXEC ssh -o 'IdentityFile="/app/misc_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 -o ConnectTimeout=8 -o ServerAliveInterval=50 10.0.0.211 'ps -ef | grep java | grep -i tomcat | grep -v grep | wc -l'
<10.0.0.211> (0, '0\n', '')
changed: [10.0.0.211] => {
"changed": true,
"rc": 0,
"stderr": "",
"stderr_lines": [],
"stdout": "0\n",
"stdout_lines": [
"0"
]
}
TASK [raw] *************************************************************************************************************************************************************
task path: /app/Ansible/playbook/check.yml:1270
skipping: [10.0.0.211] => {
"changed": false,
"skipped": true,
I have no idea but the same code works fine if i change the target server from 10.0.0.211 to something else.
Why does the exact same ssh connection work for other tasks and fail for the first task ?
How can I fix this issue ?
Here is the maximum debug for ssh failed and passed connections for both the failing and passing tasks https://filebin.net/8v5xy28edtaz0bhh/ansible_ssh_issue.txt?t=o4l9o4d1.