Mis*_*sko 1 python jinja2 ansible
我有两个清单:
a:
- 1
- 2
- 3
b:
- 2
- 3
- 4
Run Code Online (Sandbox Code Playgroud)
a仅当 中包含任何项目时,我才需要运行任务b。这怎么可能?
tasks:
- name: one of elements of a in b
debug: msg=At least one of elements of a is contained in b
when: ???
Run Code Online (Sandbox Code Playgroud)
Ansible 有intersect过滤器,它将返回两个列表中包含的元素。(参见文档)
{{ a | intersect(b) }}
Run Code Online (Sandbox Code Playgroud)
结果将是一个包含元素2和的列表3列表。
根据您的情况,只需检查结果列表的长度:
tasks:
- name: one of elements of a in b
debug: msg=One of elements of a is contained in b
when: "{{ a | intersect(b) | length > 0 }}"
Run Code Online (Sandbox Code Playgroud)
更新:对于现代 Ansible 语法{{,}}必须省略 when 语句:
tasks:
- name: one of elements of a in b
debug: msg=One of elements of a is contained in b
when: a | intersect(b) | length > 0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3431 次 |
| 最近记录: |