【发布时间】:2020-05-17 04:18:25
【问题描述】:
我想根据任务中设置的条件来包含任务。
tasks:
- name: SET INIT STATUS
set_facts:
passed: true
- name: INCLUDE TASKS WITH LOOP
include_tasks: update_status.yml
loop: [1, 2, 3]
when: passed
update_status.yml:
- name: OUTPUT THE STATUS
debug: msg="ITEM: {{item}} has status {{passed}}"
- name: UPDATE the Status
set_fact:
passed: false
我期望它只会为项目 1 运行一次,因为在它运行后,它会将状态更改为 false,然后条件检查失败。但它实际上运行了 3 次,所以看起来它不会在循环期间再次检查状态。
这是输出
TASK: [SET INIT STATUS]
ok: [localhost]
TASK: [INCLUDE TASKS WITH LOOP]
included: simple.yml for localhost
included: simple.yml for localhost
included: simple.yml for localhost
TASK: [OUTPUT THE STATUS]
ok: [localhost] => {
"msg": ITEM 1 has status True
}
TASK: [UPDATE the Status]
ok: [localhost]
TASK: [OUTPUT THE STATUS]
ok: [localhost] => {
"msg": ITEM 2 has status False
}
TASK: [UPDATE the Status]
ok: [localhost]
TASK: [OUTPUT THE STATUS]
ok: [localhost] => {
"msg": ITEM 3 has status False
}
TASK: [UPDATE the Status]
ok: [localhost]
【问题讨论】: