我尝试用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
似乎一切都是正确的。
答案 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
目录中的目录名称没有附加版本。这就是厨师要求的方式。