【发布时间】:2020-12-10 03:43:30
【问题描述】:
当任务本身也基于循环时,如何向基于循环的 ansible 任务添加条件?
例如,这是我的代码:
- hosts: all
gather_facts: False
vars:
current_version: 826
versions:
- 805
- 821
- 824
- 826
tasks:
- name: First Task
find:
paths: /Users/tomer/projects/personal/ansible/test
patterns: snapshot*
register: files
when:
- current_version == item
loop: "{{versions}}"
- name: Second task
set_fact:
test_work: "{{ true if item > 0 else false}}"
loop:
- "{{ files | json_query('results[*].matched') }}"
到目前为止,这按预期工作。
如果current_version 与列表中的某个版本匹配,则第一项任务是查找名称为snapshot 的任何文件。
第二个任务迭代第一个任务的字典结果,并根据每个项目设置事实。 (在我的例子中,只有一项具有此属性)。
我想运行第二个任务,仅在第一个任务确实运行时,但是,changed 状态始终为false ,所以这个条件没有用。
我想添加current_version == item 的相同条件,但我不能在这里使用两次item。
知道如何实现吗?
【问题讨论】:
标签: ansible