没找到Cookbook python

时间:2014-09-15 14:50:04

标签: chef 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/.berkshelf/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

似乎一切都是正确的。

1 个答案:

答案 0 :(得分:1)

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

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

因此,通常,您可以在自己的主厨库(即包含Berksfile的目录)中运行此目录,以创建适合厨师的cookbooks目录:

berks install --path /path/to/your/chef/repo/cookbooks

然后,在solo.rb中,您可以告诉厨师使用此快照目录

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

请注意cookbooks目录中的目录名称没有附加版本。这就是厨师要求的方式。