跳过包含循环的任务

问题描述 投票:0回答:1

Ansible 文档指出,对循环中的

every
项执行 when 条件。

但是,是否存在“任务全局”条件(即当

when
子句为
false
时,会跳过整个任务)?

loops ansible
1个回答
0
投票

确实不存在 “任务全局” 条件,但如果您循环的列表为空,您可以轻松跳过包含循环的任务。

因此,如果您将条件直接烘焙到模板化

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]
© www.soinside.com 2019 - 2024. All rights reserved.