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

Chef-client не обновляет кулинарную книгу с сервера

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

    Распространенная проблема с версией поваренной книги заключается в том, что вы можете локально изменять и загружать поваренную книгу версии 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.

  2. Убедитесь, что ваши изменения действительно вносятся на 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 не загрузили новую зависимость для моей поваренной книги. После того, как я загрузил это, клиент начал использовать более новую версию.