如何控制厨师的版本流浪用来提供虚拟机?(How to control the version of

2019-06-26 00:41发布

电流厨师配方并不是因为在0.10.10版中的错误的运行。 如何升级厨师是流浪使用的版本,以0.10.12?

我不想只是更新了虚拟机的当前实例 - 我一直在破坏和重建的。 我是否需要更改流浪底盒的东西,或者东西在我的(身体)系统的安装?

Answer 1:

使用插件流浪流浪者,综合性工作对我来说很大:

vagrant plugin install vagrant-omnibus

然后,您可以简单地做供应之前配置在Vagrantfile你的厨师版本:

config.omnibus.chef_version = :latest

您还可以指定一个特定版本:

config.omnibus.chef_version = '11.6.0'


Answer 2:

添加行

config.vm.provision :shell, :inline => 'apt-get install build-essential ruby1.9.1-dev --no-upgrade --yes'
config.vm.provision :shell, :inline => "gem install chef --version 11.4.2 --no-rdoc --no-ri --conservative"

您Vagrantfile之前,请config.vm.provision :chef_solo块。

道具的豪拉基的评论http://dougireton.com/blog/2012/12/23/automatically-upgrading-chef-client-on-vagrant-up/

编辑,包括杰森梅菲尔德的评论。 确保给他一个给予好评了。 我加了--no-upgrade加快速度并匹配--conservative在第二行。 你可以代替做什么贾森做的,同时删除--no-upgrade--conservative

编辑包括匿名user228653建议编辑



Answer 3:

重建基本框。 首先,把它无需配置和SSH到它。

vagrant up --no-provision 
vagrant ssh

然后,执行你需要更新框的命令。 这可以包括更新厨师和Ruby。 或者,更新包用于操作系统,等你应该清理不是必需的,如下载文件包或缓存所有的箱子。

例如,我用的是Opscode公司总括全栈安装的厨师在我的流浪箱(原内置VeeWee ),我更新包,太。

sudo dpkg --purge chef chef-full
sudo true && curl -L https://www.opscode.com/chef/install.sh | sudo bash
sudo apt-get update && sudo aptitude safe-upgrade
sudo rm /var/cache/apt/archives/*.deb

不要忘了“零”的磁盘,以减少大小。

# a bunch of commands like gem install chef, apt-get upgrade, whatever
sudo dd if=/dev/zero of=/EMPTY bs=1M
sudo rm /EMPTY
exit

然后,包装盒并把它添加到您的使用环境流浪汉。

vagrant package
vagrant box add mynewlucid32 package.box

如果你想使用相同的邮箱名称,你需要(〜/ .vagrant.d /盒/ BOXNAME)首先删除现有框。



Answer 4:

有许多的选择 ,你可以使用主厨供应时注明。 其中之一是version ,它允许你指定你想要的厨师版本。

例如,请参见chef.version在从该提取物线Vagrantfile矿的:

config.vm.provision :chef_solo do |chef|
   chef.version = "10.14.2"
   chef.cookbooks_path = "cookbooks"
   chef.add_recipe("vagrant_main")
 end


Answer 5:

我无法张贴在答案的意见,但我想,把注释添加到布赖恩·拉森的回答以上。 为了得到他的指挥调配工作,我需要添加一行它能够在打造宝石原生扩展安装的新厨师版本之前。 因此,它成为:

config.vm.provision :shell, inline: 'apt-get install ruby1.9.1-dev'
config.vm.provision :shell, inline: 'gem install chef --version 11.4.4 --no-rdoc --no-ri'

这是在Ubuntu 13.04,在关系到人的情况下。



Answer 6:

如果使用的是厨师测试厨房,那么你可以指定大厨版本.kitchen.yml文件,如下所示:

provisioner:
  name: chef_zero
  require_chef_omnibus: 12.6.0


文章来源: How to control the version of Chef that Vagrant uses to provision VMs?