Назад | Перейти на главную страницу

Salt top.sls не обновляется на `salt-run fileserver.update` с помощью gitfs

У меня есть единственный соленый миньон, связанный с мастером соли. Недавно я переименовал большой файл .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 дает ожидаемый (длинный) вывод, соответствующий тому, что я вижу в репозитории битбакета. Бег 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

Поскольку соль отображает master ветвь к base окружающая среда (благодаря gitfs_base), правильно env в белый список baseне master.