我试图将某些条件中的任务包含在块中。此块中的一些任务还有其他条件。 问题是这些任务(带有附加条件)被跳过。阻止条件和所有附加条件均为真。
下面是一个示例游戏:
- block:
- set_fact:
packages_to_install: "{{ packages_to_install }} + [ '{{ (distrs.stdout | from_json).postgresql }}' ]"
- set_fact:
packages_to_install: "{{ packages_to_install }} + [ '{{ (distrs.stdout | from_json).webserver }}' ]"
when:
- server.webserver is defined
- server.webserver == true
when:
- server is defined
因此,postgresql被添加到包列表中,但是webserver不是。
根据the docs,块中的所有任务将在从块中追加when条件并在任务的上下文中评估之后执行。 也许在Ansible 2.4中不仅可以使用附加条件来封闭任务吗?
答案 0 :(得分:3)
您应该修复when
声明的缩进。
也许在Ansible 2.4中不仅可以附加附加条件的任务吗?
Ansible 2.4工作正常:
tasks:
- block:
- debug:
msg: "task 1"
- debug:
msg: "task 2"
when: false
- debug:
msg: "task 3"
when: true
when: true
结果:
TASK [debug] **************************************************************************************************
ok: [localhost] => {
"msg": "task 1"
}
TASK [debug] **************************************************************************************************
skipping: [localhost]
TASK [debug] **************************************************************************************************
ok: [localhost] => {
"msg": "task 3"
}
为了清晰起见,您可以随时重新排序block
任务中的密钥:
tasks:
- when: true
block:
- debug: