簡體   English   中英

如何控制Vagrant用於配置VM的Chef版本?

[英]How to control the version of Chef that Vagrant uses to provision VMs?

由於版本0.10.10中的錯誤,當前的Chef食譜未運行。 如何將Vagrant使用的Chef版本升級到0.10.12?

我不想只是為VM的當前實例更新它-我一直在銷毀和重建它們。 我需要在“無業游民”基礎框中更改某些內容,還是在(物理)系統的安裝中更改某些內容?

使用Vagrant插件vagrant-omnibus對我來說非常有用

vagrant plugin install vagrant-omnibus

然后,您可以在配置之前先在Vagrantfile中配置您的Chef版本:

config.omnibus.chef_version = :latest

您還可以指定特定版本:

config.omnibus.chef_version = '11.6.0'

添加行

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塊之前添加到config.vm.provision :chef_solo

hauraki在http://dougireton.com/blog/2012/12/23/automatically-upgrading-chef-client-on-vagrant-up/上的評論的道具

編輯以包括Jason Mayfield的評論。 確保也給他投票。 我添加了--no-upgrade來加快處理速度,並在第二行中匹配--conservative 您可以改為執行Jason的操作,並刪除--no-upgrade--conservative

已編輯以包括匿名用戶建議的編輯

重建基本框。 首先,在不進行預配和SSH的情況下啟動它。

vagrant up --no-provision 
vagrant ssh

然后,執行更新框所需的命令。 這可以包括更新Chef和Ruby。 (可選)更新操作系統的軟件包等。您應該清除所有不需要的框,例如下載的軟件包文件或緩存。

例如,我在我的Vagrant框中使用了Chef的Opscode Omnibus Full Stack Full Installer安裝程序 (最初由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)。

使用Chef進行配置時,可以指定許多選項 其中之一是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

我無法對答案發表評論,但是我想在上面的布萊恩·拉森答案中添加注釋。 為了使他的配置命令生效,我需要在其之前添加一行,以便能夠在安裝新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上,以防萬一。

如果使用的是Chef Test Kitchen,則可以在.kitchen.yml文件中指定Chef版本,如下所示:

provisioner:
  name: chef_zero
  require_chef_omnibus: 12.6.0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM