Ansible 文档指出,对循环中的
every项执行
when
条件。
但是,是否存在“任务全局”条件(即当
when
子句为false
时,会跳过整个任务)?
确实不存在 “任务全局” 条件,但如果您循环的列表为空,您可以轻松跳过包含循环的任务。
因此,如果您将条件直接烘焙到模板化
loop
变量中,那么您就可以实现您想要的行为。
例如:
- name: Skip the whole task
ansible.builtin.debug:
var: item
loop: "{{ range(1,5) if not should_skip else [] }}"
vars:
should_skip: true
产生输出:
TASK [Skip the whole task] ***********************************************
skipping: [localhost]
根据需要,这可以说比
更干净- name: Skip the whole task
ansible.builtin.debug:
var: item
loop: "{{ range(1,5) }}"
when: not should_skip
vars:
should_skip: true
制作
skipping: [localhost] => (item=1)
skipping: [localhost] => (item=2)
skipping: [localhost] => (item=3)
skipping: [localhost] => (item=4)
skipping: [localhost]