将两个版本号与ansible中的版本进行比较
Compare two version numbers with version in ansible
我正在编写一个剧本,只有当软件的新软件包版本可用时才应该 运行。
这两个版本号都是我用“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 中出现语法错误。
有什么想法吗?
谢谢
可以在条件语句中使用 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, '>')"
我正在编写一个剧本,只有当软件的新软件包版本可用时才应该 运行。 这两个版本号都是我用“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 中出现语法错误。
有什么想法吗?
谢谢
可以在条件语句中使用 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, '>')"