我从Chef社区下载了食谱“oc-java-master”,现在我正在尝试使用我在Windows Server 2008上安装的chef-solo来运行它。
经过大量的谷歌搜索和stackoverflow支持后,我能够获取定义运行列表的JSON文件。但是下面的错误一直困扰着我4-5个小时,我完全无能为力。
[2012-11-28T11:33:28 + 00:00]致命:Chef :: Exceptions :: CookbookNotFound:找不到Cookbook java。如果您从另一本食谱中加载java,请确保在元数据中配置依赖项
如果有人可以查看食谱并建议我解决方案,我将非常感谢你。 食谱的网址为here。
答案 0 :(得分:4)
一些事情。
使用Chef Solo,您必须预先告诉它更多信息,以便找到烹饪书。
它需要知道要用于运行的运行列表(以及节点属性,如果有)。这是使用-j
选项传递的“json文件”。
需要知道烹饪书的路径。您可以使用-r
选项从远程tarball下载它们,然后让它处理其余部分,或者您必须编写具有cookbook_path
值的配置文件并取消归档您要使用的cookbook在那个目录中。默认情况下为c:\var\chef\cookbooks
。
此外,Opscode Chef Community Site与GitHub上的“Cookbook”组织不同。
Opscode's Java cookbook无法在Windows上运行。你需要自己编写或找到另一个。
最后,厨师mailing lists和IRC channels是快速获得厨师帮助的最佳方式。
答案 1 :(得分:3)
您需要在metadata.rb文件中添加一行。 取决于“cookbookname” 为你的问题 转到oc-java-master的元数据文件并写入
取决于“java”
请确认您的食谱路径中存在cookbook java
答案 2 :(得分:2)
就我而言,我在使用Vagrant和chef_solo提供商。看来目标厨师节点(在我的情况下是Vagrant托管VM)上的文件夹/ tmp / vagrant-chef / a0544031e745d8ec23aa205c03bf9231是此提供程序缓存cookbook的位置。由于某种原因,此文件夹为空,导致chef_solo找不到任何烹饪书。也许它是空的,因为我打断了执行(只是猜测)。
我完全删除了/ tmp / vagrant-chef然后" vagran reoad"其次是" vagrant provision"命令。这创建了/ tmp / vagrant-chef / a0544031e745d8ec23aa205c03bf9231 / cookbooks树的新副本,这次一切正常,我不再有#34;没有找到Cookbook"
答案 3 :(得分:0)
或提供您自己的solo.rb文件
chef-solo --config ~/.chef/solo.rb --override-runlist 'recipe[your-app]'
其中solo.rb的内容为:
cookbook_path ENV['HOME']
答案 4 :(得分:0)
我的问题几乎完全相同,尽管除了上面看到的以外,我的解决方案还有其他问题。就我而言,我是从安装ChefDK的盒子中手动复制食谱的。我已经从
复制了食谱c:\ users [user] .berkshelf \ cookbooks目录
我打算运行Chef-client的目标计算机。我最初尝试运行有问题的零厨师,所以我尝试了sof并设置了一个带有运行列表的.json文件和一个solo.rb文件,就像上面看到的那样通过了,但是仍然出现错误。
事实证明,问题是由每本复制的食谱(其名称中嵌入了版本)引起的。从名称中删除版本后,它会从solo.rb中指定的路径中找到确切的版本。
在我的情况下,问题不是要找到食谱,而是要找到与依赖项中指定的名称完全相同(没有版本)的食谱。