I’m trying to ping servers and fail immediately at the first one that is unreachable. However, this doesn’t seem to work. I found this old issue about it but apparently it hasn’t been resolved. https://github.com/ansible/ansible/issues/16475
What happens if you add serial:1 and max_fail_percentage:1 and removing any_errors_fatal directive?
It still continues on after failing, it just does so one host at a time.
PLAY [Ping] ******************************************************************************************************************************************************************
TASK [Ping Servers] **********************************************************************************************************************************************************
fatal: [myhost1]: UNREACHABLE! => {“changed”: false, “msg”: "Data could not be sent to remote host "myhost1". Make sure this host can be reached over ssh: ", “unreachable”: true}
NO MORE HOSTS LEFT ***********************************************************************************************************************************************************
NO MORE HOSTS LEFT ***********************************************************************************************************************************************************
PLAY [Ping] ******************************************************************************************************************************************************************
TASK [Ping Servers] **********************************************************************************************************************************************************
fatal: [myhost2]: UNREACHABLE! => {“changed”: false, “msg”: "Data could not be sent to remote host "myhost2". Make sure this host can be reached over ssh: ", “unreachable”: true}
NO MORE HOSTS LEFT ***********************************************************************************************************************************************************
NO MORE HOSTS LEFT ***********************************************************************************************************************************************************
PLAY [Ping] ******************************************************************************************************************************************************************
TASK [Ping Servers] **********************************************************************************************************************************************************
…
So, you guys think I should file an issue for this? I don’t know what else to do.
I’ve tried the following with a vanilla ansible.cfg (nothing but defaults)
mkdir ~/temp
➜ temp cat test.yml
- hosts: all
serial: 1
max_fail_percentage: 1
gather_facts: false
tasks: - ping:
➜ temp cat inventory
[all]
unreachable
localhost
➜ temp ansible-playbook -i inventory test.yml -k
SSH password:
PLAY [all] ************************************************************************************************************************************************************************************
TASK [ping] ***********************************************************************************************************************************************************************************
fatal: [unreachable]: UNREACHABLE! => {“changed”: false, “msg”: “Failed to connect to the host via ssh: ssh: Could not resolve hostname unreachable: Name or service not known”, “unreachable”: true}
PLAY RECAP ************************************************************************************************************************************************************************************
unreachable : ok=0 changed=0 unreachable=1 failed=0 skipped=0 rescued=0 ignored=0
As you can see it does not continue with localhost, which will succeed if I revert the inventory order.
Regards,
I don’t know what to tell you, it does for me.