summaryrefslogtreecommitdiff
path: root/3 Resources/ansible/loop-results-prior-loop.md
diff options
context:
space:
mode:
authorJasper Ras <jras@hostnet.nl>2025-01-19 21:14:51 +0100
committerJasper Ras <jras@hostnet.nl>2025-01-19 21:14:51 +0100
commit9642cd7ae24f0ba79ce5647c709b35ae8f06a285 (patch)
treeae25c3b0db7ae4c23186b294c6d000073f085c2d /3 Resources/ansible/loop-results-prior-loop.md
parent969b96c2531fb986f6c7f21fd544391b439defd7 (diff)
vault backup: 2025-01-19 21:14:51
Diffstat (limited to '3 Resources/ansible/loop-results-prior-loop.md')
-rw-r--r--3 Resources/ansible/loop-results-prior-loop.md30
1 files changed, 30 insertions, 0 deletions
diff --git a/3 Resources/ansible/loop-results-prior-loop.md b/3 Resources/ansible/loop-results-prior-loop.md
new file mode 100644
index 0000000..cbd50a2
--- /dev/null
+++ b/3 Resources/ansible/loop-results-prior-loop.md
@@ -0,0 +1,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 }}"
+``` \ No newline at end of file