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

时间:2017-07-26 14:23:58

标签: salt-stack

安装了最新版本的软件包,它希望配置文件在包含版本号的路径中(例如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 :(得分:0)

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

pkg

然后在状态sls或jinja模板中使用{% 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] %} ,因为它将在Jessie上解析为{{ pg_version }}并在拉伸(当前)时解析为9.4