I'm thinking about going down this road, if anyone has any better ideas, 
please share.  it seems as though it will work fine, just not sure if there 
is a better/simpler/more appropriate solution.

---

- name: "get down hosts"
  hosts: localhost

  tasks:

    # TODO: update to call a dynamic script/action plugin to populate
    #       with down hosts to be excluded
    - name: add down host to group
      add_host:
        hostname: '{{ item }}'
        groupname: "unreachable_hosts"
      with_items:
        - "host_unreachable"

- name: "unreachable test"
  hosts: "*:!unreachable_hosts"
  become: no

  tasks:

  - name: "success1"
    copy:
      content: "my stuff"
      dest: /tmp/file.success1


On Wednesday, February 27, 2019 at 2:41:31 PM UTC-8, Adam E wrote:
>
> hi Brian, I was wondering if there is anything else you can suggest to 
> me.   I want to report a successful ansible run when the only thing that 
> failed were unreachable hosts so that it returns success back to AWX.    
>
> Is there a callback plugin or some local customization that I can write in 
> the meantime and then contribute back to Ansible core?
>
> Or perhaps some sort of preprocessor that runs through the inventory and 
> removes unreachable/down hosts?
>
> I am interested in two things:
> 1. any type of quick workaround.   I tried the suggestion you mentioned 
> with regards to the meta_clear_host_errors, but this didn't work.  I posted 
> the output below.  Even if it did work, I would be concerned that it would 
> clear other errors other than unreachable.
> 2. What is the correct long term solution (enhancement to ansible) to this 
> problem, if you agree this would be useful and can provide some guidance of 
> a solution you support and I can also work on a PR to add to the the core 
> if it's not too complex.  I think this would be useful.
>
>
> $ ansible-playbook  -i inventories.unreachable/ unreachable2.yml ; echo 
> "return 
> code from run is: $?"
>
>
> PLAY [unreachable test] ********************************
>
>
> TASK [Gathering Facts] *******************************
> ok: [host_online]
> fatal: [host_unreachable]: UNREACHABLE! => {"changed": false, "msg": "Failed 
> to connect to the host via ssh: ssh: connect to host 10.20.3.21 port 22: 
> Connection timed out\r\n", "unreachable": true}
>
>
> TASK [success1] *****************************
> changed: [host_online]
>
>
> TASK [success1] **************************
> fatal: [host_unreachable]: UNREACHABLE! => {"changed": false, "msg": "Failed 
> to connect to the host via ssh: ssh: connect to host 10.20.3.21 port 22: 
> Connection timed out\r\n", "unreachable": true}
>  to retry, use: --limit @/homenfs/aedwards/unreachable2.retry
>
>
> PLAY RECAP ******************
> host_online                : ok=2    changed=1    unreachable=0    failed=
> 0
> host_unreachable           : ok=0    changed=0    unreachable=2    failed=
> 0
>
>
> return code from run is: 4
>
>
> playbook:
> $ cat unreachable2.
> $ cat unreachable2.yml
> ---
>
>
> - name: "unreachable test"
>   hosts: "*"
>   become: no
>
>
>   tasks:
>
>
>   - name: "success1"
>     copy:
>       content: "my stuff"
>       dest: /tmp/file.success1
>
>
>   - meta: clear_host_errors
>
>
>
> On Wednesday, January 16, 2019 at 3:21:24 PM UTC-8, Brian Coca wrote:
>>
>> So what you are asking would be the 'default' way ansible operates, it 
>> removes 'unreachable' hosts from the rest of the play and then 
>> continues with the rest of the hosts. 
>> > - any future tasks in the play against that host will not be run (no 
>> point as they will all fail as host unreachable). 
>>   this is the default 
>> > - the playbook will continue run all tasks against the other hosts that 
>> are reachable 
>>    also the default 
>> > - the playbook run will report success (return code = 0) 
>>   this is not the default, but you can have a `meta: 
>> clear_host_errors` as your last task .. but this might be too big of a 
>> hammer. 
>>
>> There are some cases in which the above is not true, for example, 
>> using serial, if all hosts in a 'serial batch' fail (unreachable 
>> counts) then the whole play fails, you also have max_fail_percentage 
>> to manage how many failures you tolerate. 
>>
>>
>> ---------- 
>> Brian Coca 
>>
>

-- 
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/533c83f4-8d1f-4c3a-b791-7501069248e7%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to