我正在写一部剧本,仅在有新的软件包版本可用时才能运行。 这两个版本号都是我使用“ set_fact”设置的自定义事实
Ansible让您比较版本号,所以我这样尝试:
- name: compare versions
debug:
msg: "The version {{ new_version }} is newer than the old version {{ old_version }}"
when: "{{ new_version is version('{{ old_version }}', '>', strict=True }}"
Ansible引发错误,指出版本号无效。当我将“ old_version”设置为固定的版本号时,它将按预期工作。 是否可以将两个事实与“版本”进行比较? 我已经用双引号等尝试了不同的方法,这会导致ansible语法错误。
有什么想法吗?
谢谢
答案 0 :(得分:1)
它可以在条件中使用Jinja分隔符{{
。在when:
条件下,不需要这些定界符进行插值。
以下示例起作用:
vars:
new_version: 14
old_version: 12
tasks:
- debug:
msg: 'The version {{ new_version }} is newer than the old version {{ old_version }}'
when: "new_version is version(old_version, '>')"