【问题标题】:Saltstack: How to define in top.sls "Package less than version ..."Saltstack:如何在 top.sls 中定义“小于版本的包......”
【发布时间】:2021-07-15 21:58:01
【问题描述】:

我有以下问题:

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

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

但我不喜欢那里。我尝试了几种变体,但无法选择特定粒度小于特定版本的奴才。就像在这种情况下:要选择所有版本低于 3003.1 的 minions 对其应用状态,这会直接从不同的 repo 获取包。

如何选择“小于”谷物?

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

提前感谢大家的帮助

【问题讨论】:

    标签: salt-stack


    【解决方案1】:

    查看以下颗粒:saltversioninfo。 这个grain是一个列表:[ 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 之间的小兵。

    这有点静态,您需要在新版本之后进行修改。但我希望这会对你有所帮助。

    编辑:

    上面的匹配器未经测试,我没有旧版本的奴才。您应该先使用以下 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

    【讨论】:

    • 首先:感谢您的快速回复!好吧,这满足了我的想法和恐惧:这不是一个可以通过“小于”和“大于”等运算符过滤的数值。这真是太可悲了:/我还尝试使用基于“小于”和“大于”但没有运气的osmajorrelease(因为它是另一个数字颗粒)进行过滤。但我也发现test.pingmodule 可以很好地测试将选择哪些奴才。 :) 我的主要目标是简化正则表达式不匹配的 top.sls,但无论如何:非常感谢!
    • 也许我把更复杂的“选择”放在一个节点组中,我不知道。我认为从盐堆栈中实现的效果不是很好。也许我会写一个自制的匹配器,将字符串转换为数字。但至少我没有忽略一些事情:)
    • 从“静态”的角度来看,我想插入他拥有的 salt master 谷物。这样做的好处是:master 将首先升级,然后状态启动,minions 将随后升级 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多