没有找到食谱:厨师Solo

时间:2012-11-28 11:46:09

标签: chef cookbook

我从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

5 个答案:

答案 0 :(得分:4)

一些事情。

使用Chef Solo,您必须预先告诉它更多信息,以便找到烹饪书。

  1. 它需要知道要用于运行的运行列表(以及节点属性,如果有)。这是使用-j选项传递的“json文件”。

  2. 需要知道烹饪书的路径。您可以使用-r选项从远程tarball下载它们,然后让它处理其余部分,或者您必须编写具有cookbook_path值的配置文件并取消归档您要使用的cookbook在那个目录中。默认情况下为c:\var\chef\cookbooks

  3. 此外,Opscode Chef Community Site与GitHub上的“Cookbook”组织不同。

    Opscode's Java cookbook无法在Windows上运行。你需要自己编写或找到另一个。

    最后,厨师mailing listsIRC 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)

  1. Chef需要一个配置文件,但会在命令行中接受选项 代替配置文件。
  2. 它希望配置文件驻留在 / etc / chef
  3. 或提供您自己的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中指定的路径中找到确切的版本。

在我的情况下,问题不是要找到食谱,而是要找到与依赖项中指定的名称完全相同(没有版本)的食谱。