如何比较 salt sls 文件中的版本字符串

Geo*_*ton 5 salt-stack

saltstack 是否有相当于 puppets versioncmp() 的函数?或者,是否有一种方法可以在 jinja+yaml 渲染的 sls 文件中获取 distutils.version 或 Packaging.version.parse 方法(如Compare version strings in Python 中提到的)?

Pro*_*ypE 5

您可以使用该模块pkg.version_cmp

# salt-call pkg.version_cmp '1.0.2' '1.1.1'
local:
    -1
# salt-call pkg.version_cmp '0.2.4.1-0ubuntu1' '0.2.4-0ubuntu1'
local:
    1
Run Code Online (Sandbox Code Playgroud)

在 jinja 中你可以用类似于以下的方式使用它:

{% if salt['pkg.version_cmp']('1.1.0','1.0.5') > 0 %}
  ....
{% endif %}
Run Code Online (Sandbox Code Playgroud)