# How to list a subelement from hostvars for all ansible\_play\_hosts in a single line

**URL:** <https://forum.ansible.com/t/how-to-list-a-subelement-from-hostvars-for-all-ansible-play-hosts-in-a-single-line/35133>\
**Category:** Ansible Project\
**Created:** [May 7, 2021, 12:13pm UTC](https://forum.ansible.com/t/how-to-list-a-subelement-from-hostvars-for-all-ansible-play-hosts-in-a-single-line/35133 "2021-05-07T12:13:33Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![actionmystique](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/actionmystique/32/1678_2.png) [@actionmystique](https://forum.ansible.com/u/actionmystique)\
**Post date:** [May 7, 2021, 12:13pm UTC](https://forum.ansible.com/t/how-to-list-a-subelement-from-hostvars-for-all-ansible-play-hosts-in-a-single-line/35133/1 "2021-05-07T12:13:33Z")

</div>

The use case is to run a specific task once over all hosts only when at least one host failed the previous task.

It could be something like:

- name: How to list a subelement from hostvars for all ansible\_play\_hosts  
gather\_facts: True  
hosts: all  
strategy: debug  
tasks:

- name: Run first task  
include\_tasks: “task.yml”  
register: return\_task  
ignore\_errors: yes

- name: Run second task when first task has failed on at least one playing host  
debug:  
msg: “first task has failed on at least one of: {{ ansible\_play\_hosts }}”  
when: ansible\_play\_hosts | map(‘extract’, hostvars, ‘return\_task.failed’) | list is any

The conditional makes the last task fail with:

‘ansible.vars.hostvars.HostVarsVars object’ has no attribute ‘return\_task.failed’

Any suggestion to correct the conditional?

---

<div class="post-metadata">

**Author:** ![actionmystique](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/actionmystique/32/1678_2.png) [@actionmystique](https://forum.ansible.com/u/actionmystique)\
**Post date:** [May 7, 2021, 1:17pm UTC](https://forum.ansible.com/t/how-to-list-a-subelement-from-hostvars-for-all-ansible-play-hosts-in-a-single-line/35133/2 "2021-05-07T13:17:32Z")

</div>

The solution seems to be easy actually:  
when: ansible\_play\_hosts | map(‘extract’, hostvars, ‘return\_task’) | list | selectattr(‘failed’) | list is any
