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

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

问题描述:

saltstack 是否有与 puppets versioncmp() 等效的函数?或者,有没有办法获取 distutils.version 或 Packaging.version.parse 方法(如 比较 Python 中的版本字符串) 在 jinja+yaml 呈现的 sls 文件中可用吗?

Does saltstack have an equivalent to puppets versioncmp() function? Or alternatively, is there a way to get the distutils.version or packaging.version.parse methods (as mentioned on Compare version strings in Python) available in a jinja+yaml rendered sls file?

你可以使用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

在 jinja 中,您可以以类似于以下方式使用它:

Inside jinja you can use it in a way similar to:

{% if salt['pkg.version_cmp']('1.1.0','1.0.5') > 0 %}
  ....
{% endif %}