【问题标题】:salt-stack: how to get package version in state file and/or jinja templatesaltstack:如何在状态文件和/或 jinja 模板中获取包版本
【发布时间】:2017-07-28 20:55:23
【问题描述】:

已经安装了最新版本的软件包,它期望配置文件位于包含版本号的路径中(例如postgresql-server),我如何才能在我的@987654323 中使用的变量中获取已安装的版本号@file 这样盐大师就可以:

  • 在正确的路径中管理配置文件
  • 将此用于某些 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,除非您使用编排,否则无法完成。

【问题讨论】:

    标签: salt-stack


    【解决方案1】:

    我想出的最接近的方法是使用available_versionavailable_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(当前)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-05
      • 2020-11-29
      • 1970-01-01
      • 2021-05-27
      • 1970-01-01
      相关资源
      最近更新 更多