test-kitchen не будет ссылаться на местные кулинарные книги

Я пытаюсь протестировать кулинарную книгу, которая зависит от трех других местных кулинарных книг. Моя структура каталогов выглядит так:

/cookbooks/
  cookbook_test/
    recipes 
    templates 
    metadata.rb
  cookbook_dep1/
  cookbook_dep2/
  cookbook_dep3/

В моем файле метаданных в кулинарной книге, которую я пытаюсь протестировать (cookbook_test), просто упоминаются три другие зависимости кулинарной книги, например:

depends cookbook_dep1
depends cookbook_dep2
depends cookbook_dep3

Однако при запуске kitchen converge default-ubuntu-1204 я получаю следующее:

[2014-03-03T18:05:13+00:00] ERROR: Cookbook cookbook_devp1 not found. If you're loading cookbook_devp1 from another cookbook, make sure you configure the dependency in your metadata       
[2014-03-03T18:05:13+00:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)       

Единственное, что я смог найти в Интернете, это то, что я должен использовать berkshelf. Нет ли другого способа ссылаться на местные кулинарные книги только с помощью тестовой кухни?


person keftes    schedule 03.03.2014    source источник


Ответы (1)


Вы должны поместить зависимости в каталог с именем «cookbooks» (или «site-cookbooks») в том же каталоге, где находится .kitchen.yml. Или используйте Berkshelf или Librarian-Chef.

Вы также можете попытаться просто создать символическую ссылку на родительский каталог в «./cookbooks», но не уверены, что это вызовет бесконечную рекурсию для какой-либо команды.

person tmatilai    schedule 03.03.2014
comment
Я не понимаю, как это будет работать. Согласно opscode, основной репозиторий должен действовать как контейнер для всех кулинарных книг, ролей, пакетов данных и кода среды. github.com/opscode/chef-repo объясняет это лучше. Все мои кулинарные книги содержатся в одном репозитории, структура которого определяется опскодом. Вы предлагаете поместить файл .kitchen.yml в базу репозитория и написать отдельный набор кухонь для каждого типа конвергенции, который мне нужно запустить (= дополнительный набор kitchen.yml со своим собственным списком запуска)? - person keftes; 04.03.2014
comment
Тенденция последних лет заключалась в том, чтобы обращаться с поваренными книгами как с отдельными программными проектами и репозиториями. Даже Chef (ранее Opscode) разделил свой монолитный репозиторий поваренных книг на отдельные давно. Репозиторий Chef в настоящее время содержит только роли и т. д., если даже это. YMMV, но общая идея test-kitchen состоит в том, чтобы помочь интеграционному тестированию одной поваренной книги за раз и использовать некоторый менеджер зависимостей для получения других поваренных книг. - person tmatilai; 05.03.2014
comment
Похоже, нам, возможно, придется реорганизовать структуру нашего проекта. Спасибо. - person keftes; 05.03.2014
comment
Где хранятся роли и среды? Отдельный репозиторий только для этого? Кажется, я не могу найти его в opscode org. - person keftes; 05.03.2014
comment
Да, вам все еще нужен отдельный шеф-репозиторий для них. Хотя некоторые люди доходят до того, что реализуют также роли и среды с кулинарными книгами и помещают неверные данные в атрибуты кулинарной книги. YMMV. - person tmatilai; 06.03.2014