Salt top.sls 不会使用 gitfs 在 `salt-run fileserver.update` 上更新

Gro*_*com 5 git configuration-management saltstack

我有一个连接到盐主的盐仆从。我最近将一个大的 .sls 从“webserver.sls”重命名为“jetty.sls”。我使用带有 pygit2 和 ssh 的 gitfs 后端。我只启用了 gitfs 后端。 /etc/salt/master

fileserver_backend:
#  - roots
  - git

gitfs_provider: pygit2
gitfs_remotes:
  - git@bitbucket.org:Groomblecom/[repo].git:
    - pubkey: /root/salt-credentials/id_rsa.pub
    - privkey: /root/salt-credentials/id_rsa
Run Code Online (Sandbox Code Playgroud)

但是,每当我运行时,都会salt-run fileserver.update && salt '*' state.highstate出现错误:

Data failed to compile:
----------
    No matching sls found for 'webserver' in env 'base'
Run Code Online (Sandbox Code Playgroud)

运行salt '*' state.show_sls jetty给出了预期的(长)输出,与我在 bitbucket 存储库中看到的一致。运行salt '*' state.show_top给出以下内容:

----------
    base:
        - common
        - ingress
        - webserver
Run Code Online (Sandbox Code Playgroud)

这与 bitbucket repo 中的 top.sls 不一致:

base:
  '*':
    - common
  '*ingress*':
    - ingress
    - jetty
    - nginx
Run Code Online (Sandbox Code Playgroud)

运行salt-run fileserver.updaterm -rf /var/cache/salt/* && service salt-master restart对输出没有影响。

我想知道这种行为是否存在已知错误(和解决方法),是否有办法强制清除真正的缓存,或者我是否犯了配置错误。

Gro*_*com 2

错误的原因是salt考虑了所有分支,然后合并所有(!)分支来编译最终的top.sls。我有一个旧分支,它是 master 后面的几次提交,因此仍然引用了 webserver.sls。解决方案非常简单:只需将以下内容添加到/etc/salt/master

gitfs_env_whitelist:
  - master
Run Code Online (Sandbox Code Playgroud)

或者,如果您的主分支不是 master,请将 master 替换为您的分支名称。