Saltstack:如何在 top.sls "Package less than version ..." 中定义

Saltstack: How to define in top.sls "Package less than version ..."

我有以下问题:

我使用 salt stack 来管理我的 minions,它们 运行 在不同的数据中心。但是包存储库并不一致:并非所有都有最新版本的 salt。使用 Salt 堆栈我当然可以解决这个问题,所以我添加到 top.sls:

'not G@saltversion:3003.1':  
  - fixes.saltversion

但我不喜欢上面那样。我已经尝试了几种变体,但无法设法 select 比特定版本具有特定粒度的小兵。就像在这种情况下:select 所有版本比 3003.1 旧的 minions 应用状态,直接从不同的 repo 获取包。

如何 select 小于 Grain?

我已经在谷歌上搜索过了,但没有找到任何符合我的情况的东西。文档对我的情况也没有帮助。我读过自定义匹配器:但我真的需要为此实现自定义匹配器吗?

在此先感谢大家的帮助

看看下面的颗粒:saltversioninfo。 这粒是一个列表:[ majorversion, patchversion ].

您可以像这样定位发布晚于 Fluorine (2019.2.0) 的小兵:

'P@saltversioninfo:0:\b(?:3[0-9]{2}[0-2])\b or ( G@saltversioninfo:0:3003 and G@saltversioninfo:1:0 ):
  - match: compound
  - fixes.saltversion

此复合匹配将针对版本在 3000 和 3003.0 之间的随从。

这有点静态,您需要在新版本发布后修改它。但我希望这对你有所帮助。

编辑:

上面的匹配器未经测试,我没有旧版本的 minions。您应该在使用以下 salt 命令之前测试匹配器:

salt -C 'P@saltversioninfo:0:\b(?:3[0-9]{2}[0-2])\b or ( G@saltversioninfo:0:3003 and G@saltversioninfo:1:0 )' test.ping