我在一个必须通过合并请求来审查盐状态和支柱变化的环境中工作。
目前,当我们需要在提交更改之前测试它们时,我们会登录 salt master,在修改同事后检查我们正在处理的分支并执行测试。
这种方法的问题在于,它要求单个用户在需要进行测试的时间内基本上锁定 salt master。
因此我的问题是:有没有办法为单个 salt 命令指定 salt master 配置和/或 state/pillar root?
答案1
如果你使用 gitfs,那么所有分支都是 salt 中的环境。因此你可以这样做
salt-call state.highstate saltenv=testingBranch pillarenv=testingBranch test=True
您可以将它们混合搭配,因此如果您只是测试支柱变化,您可以不用 saltenv。
答案2
有一个选项允许为单个命令指定一个 salt master 配置文件,但是该配置文件的内容不能覆盖 pillar/states 根。
经过一番研究:salt 中有一个--config-dir
选项,但是由于 Salt 的异步架构,它不会覆盖 pillar 和 states roots(在这个 Salt 问题):
这很有用——但是,由于 salt 架构,这很难。基本上,salt-cli 向 minions 发出命令。minions 然后运行该命令,向 master 请求它们需要的任何文件。master 不会将 minions 的请求与正在运行的 CLI 作业进行匹配,因此无法以这种方式动态更改 file_roots 或类似内容。它们必须在 master 运行时进行更改。
解决这个问题的正确方法是使用gitfs
Salt 环境,正如 Mike 的回答中所解释的那样。