首页 文章

salt-stack:如何在状态文件和/或jinja模板中获取包版本

提问于
浏览 1968
1

安装了最新版本的软件包,它希望配置文件在包含版本号的路径中(例如 postgresql-server ),如何在我的 state.sls 文件中使用变量中的已安装版本号,以便盐主机可以:

  • 以正确的路径管理配置文件

  • 将此用于一些jinja模板化配置文件中的路径

如果我可以将值作为变量在sls中获取 .

我知道从cli我可以使用命令:

salt minion-id pkg.version packagename

返回类似的东西:

saltmaster:
   9.4+165+deb8u2

更新:我可以得到正确的版本使用例如:

{% set pg_version = salt['pkg.version']('postgresql') %}

但只有它在下一次运行时 . 有没有办法强制依赖于此?

更新:根据问题https://github.com/saltstack/salt/issues/38072除非您使用编排,否则无法完成 .

1 回答

  • 0

    最接近我设法弄清楚的是使用 pkgavailable_version 部分,如果你打算安装包,那么你可以做这样的事情(基于默认软件包repo的Debian版本编号):

    {% set pg_raw_available_version = salt['pkg.available_version']('postgresql') %}
    {% set pg_available_version = pg_raw_available_version.split('+') %}
    {% set pg_version = pg_available_version[0] %}
    

    然后在状态sls或jinja模板中使用 {{ pg_version }} ,因为它将解析为Jessie上的 9.4 和拉伸(当前)上的 9.6 .

相关问题