У меня есть поварская поваренная книга (для apache2). Не работает на одном узле. Итак, я пытаюсь настроить и обновить его, но узел, похоже, не загружает новую версию. Мне удалось загрузить все на сервер шеф-повара со своего локального компьютера с помощью 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)
Я новичок в шеф-поваре, поэтому мог совершить ошибку новичка.
Есть пара вещей, которые могут вам помочь.
Убедитесь, что загружаемая вами версия поваренной книги является самой последней.
Распространенная проблема с версией поваренной книги заключается в том, что вы можете локально изменять и загружать поваренную книгу версии 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
Замените версию, путь и имя файла - например, если вы хотите просмотреть шаблон с именем foo.erb: knife cookbook show apache2 0.1.0 templates foo.erb
Эта команда запросит файл у Chef Server и отобразит результат в вашем терминале. Это простой способ определить, что внесенные вами изменения загружаются через knife cookbook upload
.
Кроме того, если это не поможет, добавьте детали knife
версия, chef-server
версия, chef-client
версия, а также журнал отладки из knife cookbook upload apache2 -VV
будет полезно при дальнейшей отладке.
Сначала выполните отладку всех версий кулинарных книг на сервере, а затем проверьте, какую версию кулинарных книг загружает клиент. если он старый, просто проверьте, есть ли на сервере обновленная версия. если да, перейдите в пользовательский интерфейс сервера шеф-повара и проверьте наличие env. возможно, вы настроили среду, в которой указаны ограничения кулинарных книг. Пожалуйста, обновите версию там, и она снова начнет работать.
Другой причиной этого может быть то, что не все зависимости поваренной книги присутствуют на Chef-сервере. Я столкнулся с этим только сейчас, и новая версия моей кулинарной книги появлялась в knife cookbooks list
но мой клиент не использовал новую версию. После некоторой отладки я обнаружил, что ни Berkshelf, ни Knife не загрузили новую зависимость для моей поваренной книги. После того, как я загрузил это, клиент начал использовать более новую версию.