我想利用我现有的食谱和厨师回购利用厨师金属和厨师零(已经开发利用berkshelf和vagrant)
我从https://github.com/opscode/chef-metal#vagrant
提供的示例开始我有一个vagrant_linux.rb
require 'chef_metal_vagrant'
vagrant_box 'CentOS-6.4-x86_64' do
url 'http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130427.box'
end
with_machine_options :vagrant_options => {
'vm.box' => 'CentOS-6.4-x86_64'
}
我也有dev_server.rb
require 'chef_metal'
with_chef_local_server :chef_repo_path => '~/workspace/git/my-chef-repo'
machine 'dev_server' do
tag 'dev_server'
recipe 'myapp'
converge true
end
如果我将myapp食谱放在〜/ workspace / git / my-chef-repo / cookbooks下,以上工作正常 使用以下命令,我有一个名为dev_server converging的vagrant managed vm(应用myapp配方)
chef-client -z vagrant_linux.rb dev_server.rb
但是现在,我想把我的cookbooks文件夹留空并使用berkshelf, 目前看来厨师零看起来不支持,是吗? 我怎么能这样做?
答案 0 :(得分:2)
您可以将包含多个路径的cookbook_path传递为数组,如下所示:https://github.com/opscode/ec-metal/blob/master/cookbooks/ec-harness/recipes/vagrant.rb#L12-L13
with_chef_local_server :chef_repo_path => repo_path,
:cookbook_path => [ File.join(repo_path, 'cookbooks'),
File.join(repo_path, 'vendor', 'cookbooks') ]
然后你可以使用berks将上游cookbook推向不同的路径(vendor / cookbooks /),同时将你自己的cookbook放入cookbook中,如下所示:https://github.com/opscode/ec-metal/blob/master/Rakefile#L114
berks vendor vendor/cookbooks/
答案 1 :(得分:0)
“berks vendor”命令就是我一般的做法 - 使用“berks vendor”并将销售路径添加到您的菜谱路径。