Vagrant和Berkshelf以及Chef Solo:指定特定的食谱/食谱版本?

时间:2014-03-14 22:52:29

标签: chef vagrant chef-solo berkshelf

我和Berkshelf和Chef Solo一起使用Vagrant。我有多个具有多个VM的项目。我最近意识到,对于一些人来说,我需要使用' yum' cookbook 2.x版本和其他人的#yum' cookbook 3.x版。我相信Berkshelf可以安装两者都很好,但我不知道如何在我的Vagrantfile中特别指定哪一个。

它是Chef Solo配置块中的JSON的一部分吗?或者它是add_recipe()方法的参数?

我找不到任何好的参考资料。

TIA!

1 个答案:

答案 0 :(得分:1)

我想出了答案。以为我会在这里发布,因为我花了一段时间来弄明白......

在一个项目中需要一些需要较旧的yum的依赖项:

config.vm.provision :chef_solo do |chef|
  chef.add_recipe 'yum'
  # ... other recipes
  chef.json = {
    yum: { version: '2.4.4' }
  }
end

在需要最新yum的一些依赖项的另一个项目中:

config.vm.provision :chef_solo do |chef|
  chef.add_recipe 'yum'
  # ... other recipes
  chef.json = {
    yum: { version: '3.1.4' }
  }
end

在第一个项目的Berksfile中:

site :opscode
cookbook 'yum', '= 2.4.4'

第二个项目的Berksfile:

site :opscode
cookbook 'yum', '= 3.1.4'

它将两本烹饪书放在Berkshelf食谱目录中,我可以在给定的Vagrant项目中使用。

我唯一不知道的是:在chef.json块中,版本只能是特定的,还是可以包含与Berksfile中相同的选项?