![使用带有 gitfs 后端的 saltenv 时选择 Salt 顶级文件](https://linux22.com/image/707128/%E4%BD%BF%E7%94%A8%E5%B8%A6%E6%9C%89%20gitfs%20%E5%90%8E%E7%AB%AF%E7%9A%84%20saltenv%20%E6%97%B6%E9%80%89%E6%8B%A9%20Salt%20%E9%A1%B6%E7%BA%A7%E6%96%87%E4%BB%B6.png)
背景
我有一个 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