在Ansible中,我们可以使用nested
过滤器来实现字典内循环中的内循环。下面是一个示例代码,演示了如何在Ansible中实现字典内循环中的内循环:
- hosts: localhost
gather_facts: false
vars:
my_dict:
key1:
- value1
- value2
key2:
- value3
- value4
tasks:
- name: Print nested loop values
debug:
msg: "{{ item.key }} - {{ subitem }}"
loop: "{{ my_dict | dict2items }}"
loop_control:
loop_var: item
with_nested:
- "{{ item.value }}"
vars:
subitem: "{{ item.1 }}"
在上面的示例中,my_dict
是一个包含字典的变量。我们使用dict2items
过滤器将字典转换为列表,每个元素都是一个包含key
和value
的字典项。然后,我们使用loop
指令遍历这个列表,并使用loop_control
指令来设置循环变量为item
。
在with_nested
指令中,我们将item.value
作为外部循环的变量,它表示要进行内循环的值列表。在内循环中,我们使用subitem
作为内部循环的变量,它表示内循环的每个元素。
最后,我们使用debug
模块输出每个内循环的值。在输出中,我们使用item.key
表示外部循环的key
,subitem
表示内循环的元素。
运行上述示例代码,将输出如下内容:
TASK [Print nested loop values] ****************************************************************************************
ok: [localhost] => (item={'key': 'key1', 'value': ['value1', 'value2']}) => {
"msg": "key1 - value1"
}
ok: [localhost] => (item={'key': 'key1', 'value': ['value1', 'value2']}) => {
"msg": "key1 - value2"
}
ok: [localhost] => (item={'key': 'key2', 'value': ['value3', 'value4']}) => {
"msg": "key2 - value3"
}
ok: [localhost] => (item={'key': 'key2', 'value': ['value3', 'value4']}) => {
"msg": "key2 - value4"
}
以上示例代码演示了如何在Ansible中实现字典内循环中的内循环。通过使用nested
过滤器和with_nested
指令,我们可以轻松地处理这种情况。