4

我从 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,请确保在元数据中配置依赖项

如果有人可以查看食谱并建议我一些解决方案,我将不胜感激。食谱的 URL 在这里

4

5 回答 5

4

一些东西。

使用 Chef Solo,您必须提前告诉它更多信息,以便它找到食谱。

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

  2. 它需要知道食谱的路径。您可以使用该选项从远程 tarball 下载它们-r,并让它处理其余部分,或者您必须编写一个带有该cookbook_path值的配置文件并取消归档您要在该目录中使用的说明书。这是c:\var\chef\cookbooks默认设置。

此外,Opscode Chef 社区站点与 GitHub 上的“Cookbooks”组织不同。

Opscode 的 Java 食谱不适用于 Windows。您需要自己编写或找到另一个可以编写的。

最后,Chef邮件列表IRC 频道是快速获得 Chef 帮助的最佳方式。

于 2012-11-29T15:12:40.023 回答
3

您需要在 metadata.rb 文件中添加一行。取决于您的问题的“cookbookname”转到 oc-java-master 的元数据文件并写入

取决于“java”

请验证cookbook java 是否存在于您的cookbook 路径中

于 2013-08-16T07:46:09.037 回答
2

在我的情况下,我使用 Vagrant 和 chef_solo 提供者。似乎目标厨师节点(在我的情况下是 Vagrant 托管 VM)上的文件夹 /tmp/vagrant-chef/a0544031e745d8ec23aa205c03bf9231 是此提供程序缓存食谱的地方。由于某种原因,此文件夹为空,导致 chef_solo 找不到任何食谱。也许它是空的,因为我打断了一次执行(只是猜测)。

我完全删除了 /tmp/vagrant-chef,然后执行“vagran reoad”,然后执行“vagrant provision”命令。这创建了 /tmp/vagrant-chef/a0544031e745d8ec23aa205c03bf9231/cookbooks 树的新副本,这一次一切正常,我不再得到“找不到食谱”

于 2016-09-09T14:15:07.270 回答
0
  1. Chef 需要一个配置文件,但会接受命令行上的选项来代替配置文件。
  2. 它期望配置文件驻留在/etc/chef

或者给你自己的solo.rb文件

chef-solo --config ~/.chef/solo.rb --override-runlist 'recipe[your-app]'

其中 solo.rb 具有以下内容:

cookbook_path ENV['HOME']
于 2015-01-02T04:24:27.987 回答
0

我遇到了几乎完全相同的问题,尽管除了您在上面看到的内容之外,我的解决方案还有其他问题。就我而言,我从安装 ChefDK 的盒子中手动复制了食谱。我从

c:\users[user].berkshelf\cookbooks 目录

到我打算运行厨师客户端的目标机器。我最初尝试运行 chef-zero 时遇到问题,所以我尝试了 chef-solo 并设置了一个带有运行列表的 .json 文件和一个 solo.rb 文件,如您在上面看到的那样通过,但仍然出现错误。

事实证明,这个问题是由于每本复制的食谱都在名称中嵌入了版本。从名称中删除版本后,它会从solo.rb 中指定的路径中找到确切的版本。

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

于 2019-10-03T23:18:08.350 回答