Vagrant和Berkshelf和Chef Solo:指定特定的食谱/烹饪书版本



我使用Vagrant与Berkshelf和Chef Solo。我有多个项目和多个虚拟机。我最近意识到,对于一些人来说,我需要使用"美味"食谱。X版本和其他人的"yum"食谱3。x版本。我相信Berkshelf可以很好地安装这两个,但我不知道如何在我的Vagrantfile中指定具体的一个。

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

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

TIA !

我找到了答案。我想我应该把它贴在这里,因为我花了一段时间才弄明白…

在一个需要一些依赖的项目上,需要旧的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项目中使用它们。

我唯一不知道的是:在厨师内部。json块,版本只能是特定的,或者它可以包含与Berksfile中相同的选项吗?

最新更新