在Ansible中,可以使用with_nested
和when
语句来实现嵌套循环和值比较。以下是一个示例代码:
- name: Nested loop and value comparison
hosts: localhost
vars:
outer_list:
- value: 1
inner_list:
- 1
- 2
- 3
- value: 2
inner_list:
- 4
- 5
- 6
tasks:
- name: Nested loop
debug:
msg: "Outer value: {{ item.0.value }}, Inner value: {{ item.1 }}"
with_nested:
- "{{ outer_list }}"
- "{{ item.0.inner_list }}"
when: item.1 == 2
在上面的示例中,我们有一个包含外部列表和内部列表的变量outer_list
。使用with_nested
循环迭代外部列表和内部列表,然后通过when
语句来比较内部列表中的值。
运行上面的代码示例,输出将是:
TASK [Nested loop] ***************************************
ok: [localhost] => (item=[{'value': 1, 'inner_list': [1, 2, 3]}, 1]) => {
"msg": "Outer value: 1, Inner value: 1"
}
ok: [localhost] => (item=[{'value': 1, 'inner_list': [1, 2, 3]}, 2]) => {
"msg": "Outer value: 1, Inner value: 2"
}
ok: [localhost] => (item=[{'value': 1, 'inner_list': [1, 2, 3]}, 3]) => {
"msg": "Outer value: 1, Inner value: 3"
}
ok: [localhost] => (item=[{'value': 2, 'inner_list': [4, 5, 6]}, 4]) => {
"msg": "Outer value: 2, Inner value: 4"
}
ok: [localhost] => (item=[{'value': 2, 'inner_list': [4, 5, 6]}, 5]) => {
"msg": "Outer value: 2, Inner value: 5"
}
ok: [localhost] => (item=[{'value': 2, 'inner_list': [4, 5, 6]}, 6]) => {
"msg": "Outer value: 2, Inner value: 6"
}
从输出可以看出,只有当内部列表的值为2时,才会打印出外部列表和内部列表的值。