Не найдено совпадений данных верхнего файла или внешних узлов при настройке gitfs с помощью SaltStack

Я установил git на сервер nfs. Мастер соли автоматически монтирует папку, содержащую репозиторий git, при загрузке. Я скопировал файлы .sls, шаблоны и сценарии в каталог git и добавил их в git.

Я добавил следующее в основной файл конфигурации в соответствии с руководством здесь:

fileserver_backend:
  - git

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

Я сомневаюсь в том, что установить для file_roots, но пробовал оба

- /srv/salt

и

- /mnt/git-repo

с тем же результатом: «Не найдено совпадений данных верхнего файла или внешних узлов»

Версия SaltStack — 0.17.4, ОС — SLES 11.2.

Кто-нибудь знает, где я ошибся?


person Marmoy    schedule 20.01.2014    source источник
comment
Не пытаюсь вас оскорбить, но не могли бы вы подтвердить, что файл /mnt/git-repo/top.sls существует? Можете ли вы также подтвердить, что пользователь, которого вы используете для запуска соли (по умолчанию root), может получать данные из этого репозитория через ssh (например, git clone ssh://gitrepoip)?   -  person Jason Zhu    schedule 20.01.2014
comment
Вам не нужно устанавливать file_roots, если вы используете gitfs. Кроме того, когда вы используете префикс file:// для gitfs_remote, обратите внимание, что он все равно будет клонировать этот репозиторий, поэтому репозиторий должен быть либо голым репо, либо путь должен указывать на папку .git внутри репо. По сути, команда git clone <path> должна работать вне соли. После того, как у вас есть эта настройка, вы должны запустить salt 'myminion' cp.list_master, чтобы убедиться, что репо действительно попадает в кеш.   -  person Colton Myers    schedule 21.01.2014


Ответы (6)


Неправильная конфигурация

Этот раздел был неподходящим для меня, так как у меня ничего не было в локальной файловой системе.

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». Дополнительную информацию см. в пошаговом руководстве по GitFS в документации Salt.

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

Все остальное (IdentityFile) указано в /root/.ssh/config.

Кэш загрязнен

У меня остались данные предыдущих экспериментов; поэтому мне пришлось очистить кеш:

rm -rf /var/cache/salt/*

person dnozay    schedule 24.02.2015

Убедитесь, что у вас есть файл top.sls в корне ветки master и что вы перезапустили демон salt-master после изменения файла конфигурации master.

person Utah_Dave    schedule 20.01.2014

Что для меня решило эту проблему, на самом деле было обновлением пакета salt-master, кажется, что их API каким-то образом стал несовместимым между версиями, поэтому более новый установленный salt-minion не синхронизировал file_roots должным образом.

person elmariofredo    schedule 08.04.2014

Возможно, вы пытаетесь использовать точку монтирования и корни файлов в двух разных местах. У меня была аналогичная проблема некоторое время назад: SaltStack и GitFS — не найдено совпадений данных верхнего файла или внешних узлов

Мое исправление состояло в том, чтобы удалить крепление.

person Kryten    schedule 04.05.2016

Я столкнулся с этой проблемой при использовании неправильной команды jinja внутри комментария в верхнем файле. Обязательно загляните в логи миньона.

Связанная проблема, которую я открыл: https://github.com/saltstack/salt/issues/47612< /а>

person Alberto Chiusole    schedule 11.05.2018

Клонирование репозитория дало следующее сообщение «Предупреждение: похоже, вы клонировали пустой репозиторий». (спасибо @Jason Zhu) Он сделал это, потому что, хотя файлы были добавлены в репозиторий, они не были зафиксированы.

Для решения проблемы я:

  1. удален file_roots из основного файла конфигурации, так как он не нужен при использовании gitfs (спасибо @basepi)

  2. перезапустил мастер соли, чтобы применить изменения в главном файле конфигурации (спасибо @Utah_Dave)

  3. закоммитили добавленные файлы в репозиторий

person Marmoy    schedule 21.01.2014