I am trying to run a loop over a task and I am registering the results. The 
items in the loop are not unique and can repeat. I don't want to run the 
same item twice. So, in the same task, I want to use a conditional to check 
if the current loop item has run so far in the loop. For this, I use the 
registered variable and using some filters, I try to extract the items that 
were not skipped so far. (I know I could use the `unique` filter for the 
use case above. But this is a trimmed down version of the actual use case 
where each loop item is a list where the first item can be common among 
different loop items, `apply: tags` is used, etc).

In the example below, instead of `skipped` I use `failed` to keep the 
example simple. 

- hosts: 
    - localhost 
gather_facts: no 
tasks: 
  - debug: msg=item 
    loop: [1,2,3,1,2,3,4,5] 
    loop_control: 
      index_var: index 
    failed_when: index == 3 
    register: r 
    ignore_errors: true 
    when: 
      - 'item not in r.results | d([]) | reject("failed") | 
map(attribute="item") | flatten' 
   - debug: 
     msg: "{{ r.results | d([]) | reject('failed') | map(attribute='item') 
| flatten }}" 

I know this example could be rewritten with `until`, I just constructed it 
to demonstrate my point.

The first tasks prints all loop items. The second one shows however that 
item number 3 was failed.

Is there a way to access the results from previous loop items somehow? Is 
this sth I should request on github from the ansible team?

-- 
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 ansible-project+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/40965723-4a15-4e38-8dd2-ac45fe24f22an%40googlegroups.com.

Reply via email to