У меня есть поваренная книга шеф-повара (для apache2). Он не работает на одном узле. Поэтому я пытаюсь настроить и обновить его, но узел, похоже, не загружает новую версию. Я смог загрузить все на сервер chef с моего локального компьютера knife upload .
, на котором это удалось, и распечатать, что он загрузил измененные фрагменты поваренной книги apache2.
Когда я вручную запускаю (с правами root) chef-client
на узле, я вижу, что он связывается с сервером, получает список запуска и т. Д. Однако файлы рецептов /var/cache/chef/cookbooks/apache2
- это старые файлы. И рецепт терпит неудачу (потому что он не имеет изменений, которые я сделал).
Как заставить клиента шеф-повара на узле использовать новую обновленную версию поваренной книги apache2? Нужно ли мне увеличивать номер версии в кулинарной книге (я этим не занимался)?
chef-client -l debug
вывод:
[2015-01-30T10:51:31+01:00] DEBUG: Synchronizing cookbook apache2
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_ldap.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_xsendfile.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_auth_openid.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_setenvif.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_python.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_authz_host.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_proxy_ajp.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_expires.rb, as the cache is up to date.
(lots of this for all files)
Я новичок в шеф-поваре, поэтому я мог ошибиться новичком.
knife cookbook upload <cookbook_name>
. Если это не решает проблему, попробуйте увеличить версию и затем запустить ее,knife cookbook list <cookbook_name>
чтобы убедиться, что вы действительно загрузили ее правильно. В качестве альтернативы, запуститеknife cookbook download
(в другом каталоге), чтобы выяснить, что сервер считает правильным кодом.Ответы:
Я могу придумать пару вещей, которые могут вам помочь.
Убедитесь, что загружаемая вами версия поваренной книги является самой последней версией.
Распространенная проблема с версионированием поваренной книги заключается в том, что вы можете изменять поваренную книгу версии 1.0.0 локально и загружать ее, но на Chef Server уже загружена поваренная книга версии 1.0.1. В этом случае клиенты Chef обычно получают последнюю версию (если не указано иное), и ваши изменения никогда не синхронизируются с локальным кэшем.
Вы можете увидеть все текущие версии поваренной книги на Chef Server через:
knife cookbook show apache2
Одним из решений этой проблемы является то, которое вы упомянули - увеличьте номер версии по сравнению с тем, что существует на Chef Server, то есть 1.0.2, и загрузите.
Другой способ - удалить любые другие поваренные книги apache2 с Chef Server и повторно загрузить ту, которая вам нужна. Для этого не нужно обновлять номер версии, и в результате у Chef Server будет одна поваренная книга apache2.
Убедитесь, что ваши изменения действительно вносятся в Chef Server
Используя
knife cookbook show apache2 <cookbook version> recipes default.rb
Replace version, path и filename - например, если вы хотите просмотреть шаблон с именем foo.erb:knife cookbook show apache2 0.1.0 templates foo.erb
Эта команда запросит файл с сервера Chef и отобразит вывод в вашем терминале. Это простой способ определить, что внесенные вами изменения загружаются с помощью
knife cookbook upload
.Помимо этого, если это не поможет, добавление сведений о
knife
версии,chef-server
версии,chef-client
версии, а также журнала отладкиknife cookbook upload apache2 -VV
будет полезно для дальнейшей отладки.источник
Сначала отладьте все версии поваренных книг на сервере, а затем проверьте, какую версию поваренной книги загружает клиент. если он старый, просто проверьте, есть ли на сервере обновленная версия. если это также да, пожалуйста, перейдите к интерфейсу сервера chef и проверьте env. возможно, вы настроили среду, в которой указано ограничение поваренных книг. Пожалуйста, обновите версию там, и она снова начнет работать.
источник
Другой причиной этого может быть то, что не все зависимости поваренной книги присутствуют на chef-сервере. Я столкнулся с этим только сейчас, и появилась новая версия моей кулинарной книги,
knife cookbooks list
но мой клиент не использовал новую версию. После некоторой отладки я обнаружил, что ни Berkshelf, ни knife не загрузили новую зависимость для моей кулинарной книги. После того, как я загрузил это, клиент начал использовать более новую версию.источник