0

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

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

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

蒂亚!

4

1 回答 1

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 中相同的选项?

于 2014-03-15T15:01:41.553 回答