2011-10-22 85 views
8

我想用Ruby 1.9.2配置一個新的Ubuntu 10.04。我使用Vagrant和Chef Solo來配置我需要的所有東西(例如Rails,Rake,MongoDB)。默認的Ruby版本是1.8.7。在Ubuntu上使用Chef和Vagrant安裝Ruby 1.9.2

有沒有辦法將Ruby 1.9.2作爲Vagrant/Chef配置過程的一部分來安裝?

我已閱讀廚師網站上關於使用我自己的引導程序模板 - 可能與刀 - 如this one,但因爲我使用流浪漢我不知道該放哪個模板 - 我沒有廚師回購,.chef目錄甚至任何安裝在/ etc/chef上的Chef東西。

回答

11

首先,一點上下文。大多數Vagrant basebox安裝Ruby以供Chef和Puppet使用,但最新的版本會將其用於/ opt/ruby​​,而不是使用系統軟件包。他們還將/ opt/ruby​​/bin添加到路徑中,但最後。

這VeeWee模板顯示10.04盒是如何建成目前:https://github.com/jedi4ever/veewee/blob/master/templates/ubuntu-10.04.3-server-i386/postinstall.sh

至於你的問題,他們有幾種不同的情況下,你可能會試圖解決,每個都有不同的解決方案。希望其中之一將成爲你正在尋找的東西。

運行廚師食譜1.9.2

你可能會想測試1.9.2下運行廚師食譜,你不想1.8.7接近你的盒子的任何地方。解決這個問題的最好方法是創建你自己的VeeWee模板併爲自己構建一個新的基礎框架。您可以修改一個上面鏈接編譯1.9.2,而不是1.8.7,並按照https://github.com/jedi4ever/veewee

說明書使用Ruby開發1.9.2

也許更可能的是,你想破解一些使用1.9.2的Ruby代碼。爲此,您只需安裝Ruby並在/ opt/ruby​​條目之前在您的路徑中包含二進制文件。有這樣做的幾種方法:

所有這些可以用一個廚師的配方來管理。我可能不會選擇編譯選項,只留下一個直接的下載和包資源,或者對於RVM,下面的RVM食譜可能很方便http://community.opscode.com/cookbooks/rvm

的* gem_binary *包裝上的資源選項也可能取決於您希望如何確保寶石獲得安裝了新的Ruby 1.9.2(而不是選擇1.8.7)

在這裏很有用knife bootstrap的目標是讓Chef安裝在目標系統上,以便它可以運行Chef Client。流浪的baseboxes往往已經安裝了Chef,所以除非你做了特定的事情並且想要運行Chef的多個版本,否則我會避開這條路線。內置的廚師供應商如http://vagrantup.com/docs/provisioners/chef_solo.html是一個更好的選擇。

+0

我已經走了封裝選項,使用您鏈接到1.9.2包,雖然我似乎缺少一個依賴項(libffi5),所以我必須將其添加到我的配方中。 –

0

下面是我用來安裝Ruby 1.9.2

package "libffi5" do 
    action :install 
    provider Chef::Provider::Package::Apt 
end 

package "ruby-1.9.2" do 
    action :install 
    source "/tmp/vagrant-chef/cookbooks-0/ruby-1.9.2/files/default/ruby-1.9.2-p290_i386.deb" 
    provider Chef::Provider::Package::Dpkg 
end 
2

我知道這個問題是很舊的和已經回答了配方,但我希望這仍然可能是有人絆倒在這個有趣的問題。

我已經建立了一個Github repo它打算爲建立和提供一個流浪漢框,而無需從頭開始寫置備配方几個配置

例如,使用當前提供的配置,你可以建立和提供一個盒子:

  • 的Ruby 1.9.2-P290,與rbenv管理和使用捆紮機的寶石
  • 的PostgreSQL 8.4
  • MongoDB

這是我的博客上的introduction article

因爲這幾乎匹配的要求,我覺得這是值得加入這個遲到的回答:)