我正在尝试检查提供的版本是否是有效的受支持版本。我已经在变量中设置了可接受版本的列表,如果提供的版本不在列表中,我想要失败。但是,我不确定如何做到这一点。
#/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”调用。
答案 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建议的内容