Chef infra 找不到食谱

Chef infra 找不到食谱,chef-infra,chef-solo,Chef Infra,Chef Solo,我尝试用chef solo安装python 让我做 chef-solo -c solo.rb -j chef.json solo.rb: file_cache_path "/tmp/chef-solo" cookbook_path "/home/lamerman/.berkshelf/cookbooks" chef.json: { "run_list": [ "recipe[python]" ] } ls-l/home/lamerman/.berkself/cookbooks

我尝试用chef solo安装python

让我做

chef-solo -c solo.rb -j chef.json
solo.rb:

file_cache_path "/tmp/chef-solo"
cookbook_path   "/home/lamerman/.berkshelf/cookbooks"
chef.json:

{
    "run_list": [ "recipe[python]" ]
}
ls-l/home/lamerman/.berkself/cookbooks

...
drwxrwxr-x 8 lamerman lamerman 4096 Sep 15 13:16 python-1.4.6
...
为什么我会受伤

ERROR: Cookbook python not found. If you're loading python from another cookbook, 
make sure you configure the dependency in your metadata

看起来一切都是对的。

Berkshelf和Chef本身使用的目录结构与Berkshelf不同。主要区别在于Berkself可以安装多个版本的烹饪书,而chef不能。在chef's world中,cookbook名称必须是目录名,不得添加任何内容

因此,您不能只将solo.rb指向Berkshellf目录。相反,您必须指示Berkshelf从缓存中创建适合chef的目录结构。这类似于从当前状态创建快照

因此,通常,您可以在chef存储库(即包含
Berksfile
的目录)中运行此操作,以创建适合chef的
cookbooks
目录:

berks install --path /path/to/your/chef/repo/cookbooks
然后,在
solo.rb
中,您可以告诉chef使用此快照目录

file_cache_path "/tmp/chef-solo"
cookbook_path   "/path/to/your/chef/repo/cookbooks"

请注意,
cookbooks
目录中的目录名没有附加版本。chef要求这样做。

“如果您是从另一本食谱加载python,请确保在元数据中配置了依赖项”,您这样做了吗?@garnertb,我不会从另一本食谱加载python。我只是尝试用chef solo安装python。我应该在哪里配置这些依赖项?python包是用Berkshellf下载的。非常感谢。注意:install命令似乎已被弃用,应改用“vendor”