没有找到食谱

时间:2017-10-09 12:26:55

标签: ruby vagrant chef chef-recipe chef-solo

我一直试图在很长时间内运行我的食谱,并经历了多个相同的问题,但仍无法使其工作。

  

sudo chef-solo -c solo.rb -j node.json -o main :: default;

我在我的cookbooks文件夹中运行上述命令,其中包含aptgit等其他烹饪书。

而且,在cookbooks/main/recipe/default.rb内,我包括include_recipe "apt"

每次运行命令我都会收到以下错误:

  

没有找到食谱。如果您正在从另一本食谱中加载,   确保在元数据中配置依赖关系

所以我在depends "apt"内添加了cookbooks/main/metadata.rb。但现在我收到了这个错误:

  

Cookbook取决于自己在cookbook apt,请删除此   不必要的自我依赖

3 个答案:

答案 0 :(得分:1)

如果没有更多信息,很难推断出问题所在。以下是理论上如何布置烹饪书/文件的示例:

您撰写的所有食谱都在<dir>/cookbooks/。 所有出售的食谱(例如apt)都进入<dir>/vendor/。 所以你的结构,在一个非常简单的层面,可能看起来像这样:

.
├── cookbooks
│   └── main
│       ├── metadata.rb
│       └── recipes
├── solo.rb
└── vendor
    └── apt
        ├── metadata.rb
        └── recipes

现在让我们来看看一些单独的文件:

main食谱的默认配方:

# cookbooks/main/recipes/default.rb

include_recipe 'apt'

您的main食谱的元数据文件:

# cookbooks/main/metadata.rb

name 'main'
...

depends 'apt'

请注意,apt食谱位于vendor/。这里的任何内容都应该来自第三方,你不应该修改。

从这里开始,您只需要确保solo.rb正确引用cookbook_path属性的两个cookbook目录:

# solo.rb

...
cookbook_path ['cookbooks/', 'vendor/']
...

答案 1 :(得分:0)

因此,作为一个有点无关的答案:您实际需要apt::default食谱的可能性非常小。我们将大部分菜谱都转移到了Chef核心。如果您只想运行apt-get update,请使用apt_update资源。

答案 2 :(得分:0)

第二个答案是因为这是在Slack上诊断出来的,main食谱中的元数据中name "apt"使得错误信息混乱。

相关问题