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

9

У меня есть поваренная книга шеф-повара (для 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)

Я новичок в шеф-поваре, поэтому я мог ошибиться новичком.

Рори
источник
Зайдите в веб-интерфейс chef-сервера и проверьте, есть ли изменения в кулинарной книге.
Драко Атер
1
Убедитесь, что вы побежали knife cookbook upload <cookbook_name>. Если это не решает проблему, попробуйте увеличить версию и затем запустить ее, knife cookbook list <cookbook_name>чтобы убедиться, что вы действительно загрузили ее правильно. В качестве альтернативы, запустите knife cookbook download(в другом каталоге), чтобы выяснить, что сервер считает правильным кодом.
Теджей Кардон

Ответы:

6

Я могу придумать пару вещей, которые могут вам помочь.

  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 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будет полезно для дальнейшей отладки.

Майк Фидлер
источник
1
Огромное спасибо за этот ответ ... это привело меня к пониманию того, что у нас были ограничения в кулинарной книге в нашей производственной среде, не в нашем environment / production.rb, а в berkshelf! Я даже не знал, что это может сделать это. В любом случае, после повторной загрузки нашей среды production.rb новый шеф-повар выбрал нашу последнюю поваренную книгу приложения.
Колин Кертин
2

Сначала отладьте все версии поваренных книг на сервере, а затем проверьте, какую версию поваренной книги загружает клиент. если он старый, просто проверьте, есть ли на сервере обновленная версия. если это также да, пожалуйста, перейдите к интерфейсу сервера chef и проверьте env. возможно, вы настроили среду, в которой указано ограничение поваренных книг. Пожалуйста, обновите версию там, и она снова начнет работать.

zedfauji
источник
1

Другой причиной этого может быть то, что не все зависимости поваренной книги присутствуют на chef-сервере. Я столкнулся с этим только сейчас, и появилась новая версия моей кулинарной книги, knife cookbooks listно мой клиент не использовал новую версию. После некоторой отладки я обнаружил, что ни Berkshelf, ни knife не загрузили новую зависимость для моей кулинарной книги. После того, как я загрузил это, клиент начал использовать более новую версию.

Майкл Грабб
источник
Убедитесь, что вы
Net Runner