首先让我建议一种将原始文件和自定义设置保留在 git 存储库中的方法。请参阅下文如何使用 git 外部的文件覆盖设置。
设置 Git 支柱
我假设所有文件都存储在 git 中像这里描述的那样的柱子 https://docs.saltstack.com/en/latest/ref/pillar/all/salt.pillar.git_pillar.html。我这里使用的是 salt 版本 2015.8 的语法。
ext_pillar:
- git:
- master https://gitserver/git-pillar.git:
- env: base
在 top.sls 文件中,您可以列出不同的 SLS 文件。它们将按照顶部文件中列出的顺序相互覆盖:
# top.sls
base:
'*':
standard
'*qa'
qaservers
'hostqa':
hostqaconfig
这将适用于所有服务器:
# standard.sls
test:
setting1: A
setting2: B
这将适用于名称以“qa”结尾的所有服务器:
# qaservers.sls
test:
setting2: B2
这将适用于名为“hostqa”的服务器:
# hostqa.sls:
test:
setting1: A2
命令salt hostqa saltutil.refresh_pillar
and salt hostqa pillar.data
然后将显示值 A2 和 B2,因为它们已全部合并在一起。
由于这无需指定环境即可工作,因此我建议不要在此处使用环境。
覆盖 Git 之外的一些本地设置
要在本地覆盖某些设置,您可以添加另一个外部支柱。最简单的之一是cmd_yaml
这将运行一个命令(这里:cat
)并将输出与当前支柱合并:
ext_pillar:
- git:
- master https://gitserver/git-pillar.git:
- env: base
- cmd_yaml: cat /srv/salt/local_override.sls
所有外部支柱都按照配置文件中列出的顺序执行。