Я новичок в поваре и столкнулся с проблемами с berkshelf и chef-client. Я хочу иметь свою собственную кулинарную книгу с зависимостями и применять ее. Моя первоначальная поваренная книга выглядит так:
.
├── Berksfile
├── Berksfile.lock
├── chefignore
├── client.rb
├── Gemfile
├── Gemfile.lock
├── metadata.rb
├── README.md
└── recipes
└── default.rb
#./Berksfile
source 'https://supermarket.getchef.com'
metadata
cookbook 'znc'
#./client.rb
cookbook_path '~/.berkshelf/cookbooks'
и когда я запускаю sudo bundle exec chef-client -z -o znc --config=client.rb
, шеф-клиент не может найти поваренную книгу:
Starting Chef Client, version 11.16.4
[2014-10-25T15:34:59+02:00] WARN: Run List override has been provided.
[2014-10-25T15:34:59+02:00] WARN: Original Run List: []
[2014-10-25T15:34:59+02:00] WARN: Overridden Run List: [recipe[znc]]
resolving cookbooks for run list: ["znc"]
================================================================================
Error Resolving Cookbooks for Run List:
================================================================================
Missing Cookbooks:
------------------
No such cookbook: znc
Expanded Run List:
------------------
* znc
Running handlers:
[2014-10-25T15:34:59+02:00] ERROR: Running exception handlers
Running handlers complete
[2014-10-25T15:34:59+02:00] ERROR: Exception handlers complete
[2014-10-25T15:34:59+02:00] FATAL: Stacktrace dumped to /home/sebastian/.chef/local-mode-cache/cache/chef-stacktrace.out
Chef Client failed. 0 resources updated in 3.474758165 seconds
[2014-10-25T15:34:59+02:00] ERROR: 412 "Precondition Failed "
[2014-10-25T15:34:59+02:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)
также обратите внимание:
ls ~/.berkshelf/cookbooks
build-essential-2.1.2 znc-0.0.1
Любые предложения, почему кулинарные книги не могут быть найдены?
EDIT:
Спасибо за быстрый ответ. Решение было таким, как Джон Беллоун сказал bundle exec berks vendor
и изменил мою конфигурацию client.rb
на:
# ./client.rb
cookbook_path File.dirname(File.expand_path(__FILE__)) + '/berks-cookbooks'