“找不到顶级文件或外部节点数据匹配”使用SaltStack设置gitfs

时间:2014-01-20 14:35:35

标签: git nfs salt-stack gitfs

我在nfs服务器上设置了git。 salt master在引导时自动安装包含git存储库的文件夹。我已将.sls文件,模板和脚本复制到git目录并将它们添加到git中。

根据指南here

,我已将以下内容添加到主配置文件中
fileserver_backend:
  - git

gitfs_remotes:
  - file:///mnt/git-repo

我对将file_roots设置为什么感到疑问,但是已经尝试过两次

- /srv/salt

- /mnt/git-repo

具有相同的结果:“没有找到顶级文件或外部节点数据匹配”

SaltStack版本为0.17.4,OS为SLES 11.2。

有谁知道我哪里出错了?

6 个答案:

答案 0 :(得分:1)

配置不当

这部分对我来说不合适,因为我在本地文件系统上没有任何内容。

fileserver_backend:
  - git
  - roots

我把它改为:

fileserver_backend:
  - git

缺少GitPython

easy_install GitPython

配置错误(GitPython与pygit2)

我的配置是:

gitfs_provider: gitpython
gitfs_remotes:
  - ssh://git.example.com/salt-states.git:
    - pubkey: /root/.ssh/id_rsa.pub
    - privkey: /root/.ssh/id_rsa

但是查看日志tail /var/log/salt/master

  

2015-02-24 14:25:37,162 [salt.loaded.int.fileserver.gitfs] [CRITICAL] GitFS身份验证参数' privkey' (来自远程ssh://git.example.com/salt-states.git)仅受以下提供程序支持:pygit2。目前的gitfs_provider是' gitpython'。有关详细信息,请参阅Salt文档中的GitFS演练。

gitfs_provider: gitpython
gitfs_remotes:
  - ssh://git.example.com/salt-states.git

其他所有内容(IdentityFile)都在/root/.ssh/config中指定。

缓存被污染

我从以前的实验中得到了剩余的数据;所以我不得不清理缓存:

rm -rf /var/cache/salt/*

答案 1 :(得分:0)

确保在主分支的根目录中有一个top.sls文件,并且在修改主配置文件后重新启动了salt-master守护程序。

答案 2 :(得分:0)

实际上解决这个问题的是盐主程序包升级,似乎他们的api在某种程度上在版本之间是不兼容的,所以安装的较新的salt-minion并没有正确地同步file_roots。

答案 3 :(得分:0)

可能是您尝试使用挂载点并将文件根目录放在两个不同的位置。我刚才有类似的问题: SaltStack and GitFS - No Top file or external nodes data matches found

我的解决方法是删除挂载。

答案 4 :(得分:0)

我在顶层文件的评论中使用了错误的jinja命令时遇到了这个问题。一定要看看奴才的日志。

我打开的相关问题:https://github.com/saltstack/salt/issues/47612

答案 5 :(得分:-1)

克隆存储库时显示以下消息“警告:您似乎克隆了一个空存储库”。 (感谢@Jason Zhu)它这样做是因为虽然文件已添加到存储库,但它们没有被提交。

解决问题我:

  1. 从主配置文件中删除了file_roots,因为在使用gitfs时不需要它(感谢@basepi)

  2. 重新启动salt-master,强制更改主配置文件(感谢@Utah_Dave)

  3. 将添加的文件提交到存储库