检查列表是否包含Ansible中的项目

时间:2015-01-22 02:00:07

标签: yaml ansible

我正在尝试检查提供的版本是否是有效的受支持版本。我已经在变量中设置了可接受版本的列表,如果提供的版本不在列表中,我想要失败。但是,我不确定如何做到这一点。

#/role/vars/main.yml
---
  acceptable_versions: [2, 3, 4]

#/role/tasks/main.yml
---
  - fail: 
      msg: "unsupported version"
      with_items: "{{acceptable_versions}}"
      when: "{{item}} != {{version}}"

  - name: continue with rest of tasks...

上面是我想要做的事情,但我无法弄清楚是否有单行方式为失败模块构建“list contains”调用。

2 个答案:

答案 0 :(得分:61)

在条件允许的情况下,您不需要{{}}。你在寻找的是:

- fail: msg="unsupported version"
  when: version not in acceptable_versions

答案 1 :(得分:6)

Ansible自1.6以来有一个version_compare过滤器。 您可以在when条件中执行以下操作:

when: ansible_distribution_version | version_compare('12.04', '>=')

这将为您提供专业和支持次要版本比较,您可以使用以下运算符比较版本:

<, lt, <=, le, >, gt, >=, ge, ==, =, eq, !=, <>, ne

您可以在此处找到有关此内容的更多信息:Ansible - Version comparison filters

否则,如果您的案例非常简单,您可以使用@ProfHase85建议的内容

相关问题