跳过Ansible任务循环中的项目

时间:2014-11-11 19:16:40

标签: loops ansible skip

假设我有一个名为show_canada的组var,它是一个布尔值。我有以下任务:

    - name: install conf file
      template: src="example.conf.j2" dest="/etc/{{ item }}/example.conf"
      sudo: yes
      with_items:
        - usa
        - brazil
        - canada
        - japan
        - turkey

如何让任务跳过加拿大项目,具体取决于show_canada布尔值?我想我可以有when字段来检查项目=='加拿大'和show_canada是否属实?必须有更好/更好的方法来实现这一点,任何建议?如果我有多个需要同样过滤的任务,是否有一些全局方法可以跳过某些项目?

1 个答案:

答案 0 :(得分:3)

在这些情况下,我正在做的是在dict中包含值的状态:

- name: install conf file
  template: src="example.conf.j2" dest="/etc/{{ item }}/example.conf"
  sudo: yes
  when: item.display is true
  with_item:
    - {name: usa, display: true}
    - {name: brazil, display: true}
    - {name: canada, display: false}
    - {name: japan, display: true}
    - {name: turkey, display: true}

您甚至可以设置var

的显示值
   - {name: canada, display: {{show_canada}} }