"включать рецепт" и файл Vagrantfile "шеф-повар.добавить рецепт". Какая разница?
просто запустил nginx:: source рецепт на моем бродячем ящике, и у меня очень необычное поведение.
когда я включаю рецепт с Vagrantfile (как ниже), все работает как шарм,
шеф-повар.add_recipe ("project::nginx")
шеф.add_recipe ("nginx::source")
( project:: nginx рецепт очень простой. Использование его для переопределения атрибутов по умолчанию поваренной книги nginx)
но если я включите рецепт в самом конце project:: nginx (упомянуто выше), все разваливается:
node.default['nginx']['server_names_hash_bucket_size'] = 128
include_recipe "nginx::source"
до сих пор я не знаю, есть ли разница в поведении между этими двумя вызовами. Кто-нибудь знает, в чем разница?
1 ответов
Gotya! Шеф-повар 11 особенность. Проблема с ним существует только в chef-solo:)
чтобы сделать быстрое резюме, разница:
- шеф-повар.add_recipe() - загружает весь контекст поваренной книги (все файлы, например рецепты, определения, атрибуты...)
- include_recipe "" - файлы(атрибуты, определений и т. д.), которые не находятся в списке expended run, не загружаются.
есть по крайней мере 4 способа решить проблему(поместите файлы в run список):
- include_attribute-включить файл желаемого атрибута явно.
- метаданные.RB - >зависимость-Если ваша поваренная книга использует рецепт из другой поваренной книги, поместите эту поваренную книгу в метаданные.раздел зависимостей rb, и все его файлы будут загружены.
- шеф-повар.add_recipe () - загрузить рецепт через Vagrantfile. (Упоминается здесь только для справки)
- Berkshelf-вы можете использовать этот менеджер поваренной книги для решения проблемы, а также. Вот поток Stackoverflow об этой точной проблеме и документы
для тех, кто заинтересован в дальнейшем чтении, шеф-повар 11 представил загрузку поваренной книги на основе зависимостей для файлов без рецептов. Новая логика загрузки означает, что файлы, принадлежащие кулинарным книгам, которые существуют в cookbook_path, но не находятся в расширенном run_list или зависимостях кулинарных книг в расширенном run_list, больше не будут загружаться. REF:разрыв Opscode изменяет документацию, и если вам нужна подпись ошибки, которую я получил,здесь точно такие же, даже по той же причине.