你可以混合厨师零厨师金属,厨师金属流浪汉(Vagrant)和berkshelf?

时间:2014-07-09 13:31:18

标签: vagrant chef berkshelf

我想利用我现有的食谱和厨师回购利用厨师金属和厨师零(已经开发利用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, 目前看来厨师零看起来不支持,是吗? 我怎么能这样做?

2 个答案:

答案 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”并将销售路径添加到您的菜谱路径。