我一直试图在很长时间内运行我的食谱,并经历了多个相同的问题,但仍无法使其工作。
sudo chef-solo -c solo.rb -j node.json -o main :: default;
我在我的cookbooks
文件夹中运行上述命令,其中包含apt
,git
等其他烹饪书。
而且,在cookbooks/main/recipe/default.rb
内,我包括include_recipe "apt"
。
每次运行命令我都会收到以下错误:
没有找到食谱。如果您正在从另一本食谱中加载, 确保在元数据中配置依赖关系
所以我在depends "apt"
内添加了cookbooks/main/metadata.rb
。但现在我收到了这个错误:
Cookbook取决于自己在cookbook apt,请删除此 不必要的自我依赖
答案 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"
使得错误信息混乱。