背景
我有一个 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