在Ansible中,可以使用with_nested
和with_items
来实现在字典的3层深处循环遍历包含字典的列表。
假设有以下的字典结构:
my_list:
- dict1:
key1: value1
key2: value2
key3:
- item1
- item2
- item3
- dict2:
key1: value1
key2: value2
key3:
- item1
- item2
- item3
可以使用以下代码示例来循环遍历字典的3层深处:
- name: Loop through nested dictionaries
debug:
msg: "{{ item.0 }} - {{ item.1 }} - {{ item.2 }}"
with_nested:
- "{{ my_list }}"
- "{{ item.key3 }}"
loop_control:
loop_var: item
vars:
item: "{{ item.key1 }} - {{ item.key2 }}"
在上述示例中,with_nested
用来循环遍历my_list
和item.key3
,loop_control
用来指定循环变量为item
,然后使用debug
模块打印输出。
输出结果如下:
ok: [localhost] => (item=dict1) => {
"msg": "value1 - value2 - item1"
}
ok: [localhost] => (item=dict1) => {
"msg": "value1 - value2 - item2"
}
ok: [localhost] => (item=dict1) => {
"msg": "value1 - value2 - item3"
}
ok: [localhost] => (item=dict2) => {
"msg": "value1 - value2 - item1"
}
ok: [localhost] => (item=dict2) => {
"msg": "value1 - value2 - item2"
}
ok: [localhost] => (item=dict2) => {
"msg": "value1 - value2 - item3"
}
上述代码示例遍历了my_list
中的每个字典,然后分别遍历了每个字典的key3
列表。