chef-client找不到使用berkshelf的食谱

 长风剑客2502852893 发布于 2022-12-15 13:49

我是厨师的新手,遇到了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而不是共享目录.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有