【问题标题】:Can you mix chef-zero chef-metal, chef-metal-vagrant (Vagrant) and berkshelf?你能混合chef-zero chef-metal、chef-metal-vagrant (Vagrant) 和berkshelf 吗?
【发布时间】:2014-07-09 13:31:17
【问题描述】:

我想在我现有的食谱和 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 正在收敛(应用 myapp 配方)

chef-client -z vagrant_linux.rb dev_server.rb

但是现在,我想将我的食谱文件夹保持为空并使用 berkshelf, 目前,chef-zero 似乎不支持它,是吗? 我怎么能这样做?

【问题讨论】:

标签: vagrant chef-infra berkshelf


【解决方案1】:

您可以将包含多个路径的 :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') ]

然后,您可以使用 berk 将上游说明书供应到不同的路径(供应商/cookbooks/),同时将自己的说明书放入说明书/,如下所示:https://github.com/opscode/ec-metal/blob/master/Rakefile#L114

berks vendor vendor/cookbooks/

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2017-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-17
      • 1970-01-01
      • 1970-01-01
      • 2014-07-03
      相关资源
      最近更新 更多