【发布时间】:2019-07-18 19:26:42
【问题描述】:
我有以下 ansible 剧本。 fX 适用于框架版本 1,2 或 3。当文件的版本 >= fX 时,它应该使用最后找到的类型方法选择该框架版本,因此我们不会得到多个结果。
file_version >= 1.2.0 应该给出 f2,file_version >= 2.2.0 应该给出 f3。
- name: select version
hosts: all
connection: local
become: false
vars:
version:
f3: '2.2.0'
f2: '1.2.0'
f1: '1.0.0'
tasks:
- name: debug loop
debug:
msg: "{% for F in version %}{% if file_version | version_compare(version[F],'>=') %}{{ F }} {% endif %}{% endfor %}"
ansible-playbook case.yml -i 127.0.0.1, -vv -e file_version='1.5.0'
Ansible 应该为我决定,我应该使用框架版本 1.2.0 还是 {{ f2 }}。但这当然会产生两个匹配项
f1 f2
如何取出最后找到的版本?有没有更优雅的方法来做到这一点?
【问题讨论】:
-
"
first found from dict" 具有误导性。该项目不必在字典中。
标签: loops dictionary ansible