0

我想利用现有的食谱和 chef-repo 来利用 chef-metal 和 chef-zero(已经为 dev 使用了 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 的 vagrant managed vm converging(应用 myapp 配方)

chef-client -z vagrant_linux.rb dev_server.rb

但是现在,我想将我的食谱文件夹保持为空并使用 berkshelf,目前看起来厨师零不支持它,是吗?我怎么能那样做?

4

2 回答 2

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 将上游说明书供应到不同的路径(供应商/cookbooks/),同时将您自己的说明书放入说明书/,如下所示:https ://github.com/opscode/ec-metal/blob/master/Rakefile #L114

berks vendor vendor/cookbooks/
于 2014-07-09T15:56:04.043 回答
0

“berks vendor”命令是我通常这样做的方式——使用“berks vendor”并将供应商路径添加到您的食谱路径。

于 2014-07-09T14:15:24.990 回答