我是厨师的新手,遇到了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
有什么建议无法找到食谱?
感谢您及时回复.解决方案就像John Bellone所说bundle exec berks vendor
并将我的client.rb
配置更改为:
# ./client.rb cookbook_path File.dirname(File.expand_path(__FILE__)) + '/berks-cookbooks'
John Bellone.. 12
默认情况下,Chef Client会查找一些目录.其中之一就是$CWD/cookbooks
我们可以利用berks vendor cookbooks
命令来利用它.我发现在测试期间(特别是使用自动化过程)这样做要容易得多,因为它确保我获得了新的烹饪书副本而不是缓存的陈旧副本.
如果您希望简单地启动并运行环境,我建议使用带有vagrant-berkshelf插件的Vagrantfile.这将自动供应缓存目录中的所有cookbook并将其上载到来宾计算机.如果您使用的提供程序是云计算,例如Amazon,Backspace,它甚至会工作,因为它将使用rsync而不是共享目录.