我有一个单盐连接盐主。 我最近从'webserver.sls'重命名为'jetty.sls'。 我用pygit2和ssh使用gitfs后端。 我只启用了gitfs后端。 /etc/salt/master :
fileserver_backend: # - roots - git gitfs_provider: pygit2 gitfs_remotes: - [email protected]:Groomblecom/[repo].git: - pubkey: /root/salt-credentials/id_rsa.pub - privkey: /root/salt-credentials/id_rsa
但是,每当我运行salt-run fileserver.update && salt '*' state.highstate我得到一个错误:
Data failed to compile: ---------- No matching sls found for 'webserver' in env 'base'
运行salt '*' state.show_sls jetty给出预期(长)输出,与我在bitbucket回购中看到的一致。 运行salt '*' state.show_top给出以下内容:
---------- base: - common - ingress - webserver
这与bitbucket回购中的top.sls不一致:
base: '*': - common '*ingress*': - ingress - jetty - nginx
运行salt-run fileserver.update或rm -rf /var/cache/salt/* && service salt-master restart对输出没有影响。
我想知道是否有一个已知的错误(和解决方法)这种行为,如果有办法强制一个真正的caching清除,或者如果我犯了一个configuration错误。
错误的原因是盐考虑所有分支,然后合并所有(!)分支来编译最终的top.sls。 我有一个旧的分支,这是一对夫妇承诺,所以仍然引用webserver.sls。 解决scheme非常简单:只需将以下内容添加到/etc/salt/master :
gitfs_env_whitelist: - master
或者,如果您的主分支不是主分支,请用您的分支名称replace主分支。
原因是盐合并所有分支来编译最终的top.sls。 我可以通过将其添加到/etc/salt/master来修复它:
gitfs_env_whitelist: - base
由于Salt将master分支映射到base环境(感谢gitfs_base ),正确的env到白名单是base ,而不是master 。