使用带有 gitfs 后端的 saltenv 时选择 Salt 顶级文件

使用带有 gitfs 后端的 saltenv 时选择 Salt 顶级文件

背景

我有一个 Salt 实例,配置了吉特夫斯后端。默认情况下,这指定掌握分支作为base环境。因此,当我执行:

salt <minion-id> state.apply

顶部.sls默认情况下执行文件。

情况

我想知道是否有办法指定/执行这个顶部.sls文件,同时指定saltenv(选择分支):

salt <minion-id> state.apply saltenv=<branch>

目前,返回结果为:

minion-id:
-----------
ID: states
Function: no.None
Result: False
Comment: No Top file or external nodes data matches found.
Changes:

我知道我可以在顶部.sls文件,但传入的值saltenv有些动态。它始终包含一个值feature/,但这是唯一不变的部分。我尝试将通配符环境添加到top.sls 文件,但这会导致编译错误。我知道我可以有一个两步流程,其中功能分支合并到开发分支,然后开发分支再合并到主分支,但我希望避免只是为了解决这个问题而创建开发分支。

答案1

您可以使用 Jinja 在 Salt 的 GitFS 可用的环境/分支和顶级文件之间建立动态链接。

在您的top.sls文件中,您可以有一个顶级条目:

{{ saltenv }}:
  '*':
    - foo.bar
   ...

{{ saltenv }}将被替换为当前环境上下文。通常我在运行时定义它,通过:

some-minion $ sudo salt-call saltutil.sync_modules saltenv=blah
some-minion $ sudo salt-call state.apply saltenv=blah

相关内容