Ansible Task Looping Directives: Difference between revisions
Jump to navigation
Jump to search
(→loop) |
|||
(2 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
=External= | =External= | ||
* https://docs.ansible.com/ansible/latest/user_guide/playbooks_loops.html | * https://docs.ansible.com/ansible/latest/user_guide/playbooks_loops.html | ||
* https://docs.ansible.com/ansible/latest/user_guide/playbooks_conditionals.html#loops-and-conditionals | |||
=Internal= | =Internal= | ||
* [[Ansible Concepts#Looping_Directives|Ansible Concepts]] | * [[Ansible Concepts#Looping_Directives|Ansible Concepts]] | ||
=Overview= | =Overview= | ||
=Playground= | |||
{{External|https://github.com/ovidiuf/playground/tree/master/ansible/modules/loops}} | |||
=Loops= | =Loops= | ||
==<tt>loop</tt>== | ==<tt>loop</tt>== | ||
Line 32: | Line 37: | ||
An existing variable's field that reference a list can be used: | An existing variable's field that reference a list can be used: | ||
<syntaxhighlight lang='yaml'> | <syntaxhighlight lang='yaml'> | ||
- name: | - name: find matching directories | ||
find: | |||
paths: /Users/ovidiu/tmp/x | |||
patterns: '*' | |||
use_regex: no | |||
recurse: no | |||
file_type: directory | |||
register: find_result | |||
- name: debug | |||
debug: | debug: | ||
msg: "{{ item }}" | |||
loop: "{{ find_result.files | json_query('[*].path') }}" | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Latest revision as of 00:27, 17 December 2021
External
- https://docs.ansible.com/ansible/latest/user_guide/playbooks_loops.html
- https://docs.ansible.com/ansible/latest/user_guide/playbooks_conditionals.html#loops-and-conditionals
Internal
Overview
Playground
Loops
loop
Takes a list for the task to iterate over, saving each list element into the item
variable (configurable via loop_control
)
In-Line Declaration
- name: debug
debug:
msg: "{{ item }}"
loop:
- A
- B
- C
Variable
jdks:
- corretto8
- corretto11
...
- name: Multiple items in a loop
homebrew_cask:
name: "{{ item }}"
state: present
loop: "{{ jdks }}"
An existing variable's field that reference a list can be used:
- name: find matching directories
find:
paths: /Users/ovidiu/tmp/x
patterns: '*'
use_regex: no
recurse: no
file_type: directory
register: find_result
- name: debug
debug:
msg: "{{ item }}"
loop: "{{ find_result.files | json_query('[*].path') }}"
with_items
An iterator whose elements can be accessed with item.<element>
. The content to iterate over may came from in-line declaration or from a variable.
In-line Declaration
- name: debug
debug:
msg: "{{ item }}"
with_items:
- A
- B
- C
Variable
- name: Find some files
find:
paths: '/some/dir'
patterns: '*.txt'
register: find_result
- name: debug
debug:
msg: "{{ item }}"
with_items: "{{ find_result.files | json_query('[*].path') }}"
loop_control
with_<lookup_plugin>
The same as loop
but adds the output of any lookup plugin to generate the item list.