使用Ansible比较两个版本号中的版本

3

我正在编写一个playbook,仅在软件有新的包版本时运行。这两个版本号都是我使用“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 }}"

当我将 "old_version" 设置为一个固定的版本号时,Ansible会报出版本号无效的错误。是否可以使用 "version" 比较两个事实(facts)? 我已经尝试过不同的方法,例如双引号等,但这导致Ansible出现语法错误。

有什么想法吗?

谢谢

1个回答

5

这可能涉及到在条件语句中使用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, '>')"

1
啊,我明白了 :) 这在我的工作流中也有效,太棒了,非常感谢! - undefined
1
对我也适用,谢谢。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接