检查列表是否包含 Ansible 中的项目
Check if a list contains an item in 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" 调用失败模块。
您不需要 {{}}
在 when 条件。您要搜索的是:
- fail: msg="unsupported version"
when: version not in acceptable_versions
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 建议的方法
我正在尝试检查提供的版本是否是有效的受支持版本。我已经在变量中设置了可接受版本的列表,如果提供的版本不在列表中,我想退出任务。但是,我不确定该怎么做。
#/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" 调用失败模块。
您不需要 {{}}
在 when 条件。您要搜索的是:
- fail: msg="unsupported version"
when: version not in acceptable_versions
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 建议的方法