由于版本0.10.10中的错误,当前的Chef配方未运行。如何将Vagrant使用的Chef版本升级到0.10.12?
我不想只为VM的当前实例更新它 - 我一直在破坏和重建它们。我需要在Vagrant基本框中更改某些内容,还是在我的(物理)系统安装中更改某些内容?
答案 0 :(得分:103)
使用Vagrant插件vagrant-omnibus对我很有用:
vagrant plugin install vagrant-omnibus
然后,您可以在进行配置之前在Vagrantfile中简单配置您的厨师版本:
config.omnibus.chef_version = :latest
您还可以指定特定版本:
config.omnibus.chef_version = '11.6.0'
答案 1 :(得分:40)
添加行
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"
在config.vm.provision :chef_solo
阻止之前到您的Vagrant文件。
支持hauraki对http://dougireton.com/blog/2012/12/23/automatically-upgrading-chef-client-on-vagrant-up/
的评论编辑以包括Jason Mayfield的评论。确保并给他一个upvote。我添加了--no-upgrade
以加快速度并匹配第二行的--conservative
。您可以改为执行Jason所做的操作,同时删除--no-upgrade
和--conservative
。
已修改为包含匿名用户建议编辑228653
答案 2 :(得分:31)
重建基础框。首先,在没有配置和SSH的情况下启动它。
vagrant up --no-provision
vagrant ssh
然后,执行更新框所需的命令。这可以包括更新Chef和Ruby。 (可选)更新操作系统等的软件包。您应该清除所有不需要的软件包,例如下载的软件包文件或缓存。
例如,我在我的Vagrant框中使用Opscode Omnibus Full Stack Installer for Chef(最初使用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环境中以供使用。
vagrant package
vagrant box add mynewlucid32 package.box
如果你想使用相同的盒子名称,你需要先删除现有的盒子(〜/ .vagrant.d / boxes / BOXNAME)。
答案 3 :(得分:12)
使用Chef进行配置时,您可以指定一些options。其中一个是version
,它允许您指定所需的Chef版本。
例如,请参阅我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
答案 4 :(得分:11)
我无法对答案发表评论,但我想在上面给Bryan Larsen的答案添加一条说明。为了使他的配置命令工作,我需要在它之前添加一行,以便能够在安装新的Chef版本期间构建gem原生扩展。因此,它成了:
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,如果对任何人都很重要。
答案 5 :(得分:0)
如果您正在使用Chef Test Kitchen,那么您可以在{{1}}文件中指定Chef版本,如下所示:
{{1}}