summaryrefslogtreecommitdiff
path: root/3 Resources/ansible/loop-results-prior-loop.md
blob: cbd50a27acaed40857426ef2b9a5b013ef04f4d7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
```YAML
- name: First loop
  loop: {{ blaat }}
  register: loooped
  ...

- name: Second loop
  loop: {{ loooped.results }}
  when: item.skipped is not defined
```

this loops over results of prior loop only but does not process any skipped results.

In case the results array contains another array that we want to loop over, for example when we did a shell command in a loop we can use extract:
```
- name: Print magic
  ansible.builtin.debug:
    msg: "{{ ['stdout_lines'] | map('extract', item) }}"
    loop: "{{ magic.results }}"
```

A cool example of this in practice:
```
- name: Print blockpull command
  ansible.builtin.debug:
    msg: "virsh blockpull {{ ['stdout_lines'] | map('extract', item) | list | flatten | join(' ') }}"
  loop: "{{ domain_and_disk_paths.results }}"
  loop_control:
    label: "{{ inventory_hostname }}"
```