У меня есть единственный солевой миньон, подключенный к соляному мастеру. Недавно я переименовал большой .sls из webserver.sls в jetty.sls. Я использую бэкэнд gitfs с pygit2 и ssh. Я включил только серверную часть 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
Однако всякий раз, когда я запускаю 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
Это несовместимо с top.sls в репозитории bitbucket:
base:
'*':
- common
'*ingress*':
- ingress
- jetty
- nginx
Запуск salt-run fileserver.update
или rm -rf / var / cache / salt / * && service salt-master restart
не влияет на выходные данные.
Я хотел бы знать, есть ли известная ошибка (и способ ее решения) для это поведение, если есть способ принудительно очистить настоящий кеш, или если я допустил ошибку конфигурации.
Причина ошибки в том, что соль рассматривает все ветви, а затем объединяет все (!) Ветки для компиляции окончательного файла top.sls. У меня была старая ветка, которая была парой коммитов за мастером, и поэтому все еще ссылалась на webserver.sls.
Решение довольно простое: просто добавьте следующее в / etc / salt / master
:
gitfs_env_whitelist:
- master
Или, если ваша основная ветвь не является главной, замените master именем вашей ветки.
Причина в том, что соль объединяет все ветви для компиляции окончательного файла top.sls. Я смог исправить это, добавив это в / etc / salt / master
:
gitfs_env_whitelist:
- base
Поскольку Salt отображает ветвь master
в среду base
(спасибо to gitfs_base
), правильный env
в белый список - это base
, а не master
.