2013-06-03 28 views
5

嘿,我想要建立一個流浪vm。我使用廚師獨奏進行配置,並使用chef-rbenv來管理我的版本。所以在vagrantfile我指定使用Ruby 1.9.3作爲默認的流浪者

config.vm.provision :chef_solo do |chef| 
    chef.cookbooks_path = "cookbooks" 
    chef.add_recipe "ruby_build" 
    chef.add_recipe "rbenv::system" 
    chef.add_recipe "rbenv::vagrant" 
    ... 

    chef.json = { 
    "rbenv" => { 
     "rubies" => [ "1.9.3-p327" ], 
     "global" => "1.9.3-p327", 
     "gems" => { 
     "1.9.3-p327" => [ 
     { "name" => "bundler" } 
     ] 
     } 
    } 
    } 
end 

使默認紅寶石版本將是1.9.3-P327,但它崩潰

Error executing action `install` on resource 'rbenv_ruby[1.9.3-p327] (system)' 

,如果我不指定流浪文件的版本(如見上面),並與默認的主廚建立rbenv,以便我可以安裝它,一旦我在虛擬機。然後我得到這個

[email protected]:/vagrant$ rbenv install 1.9.3-p327 
Downloading yaml-0.1.4.tar.gz... 
-> http://dqw8nmjcqpjn7.cloudfront.net/36c852831d02cf90508c29852361d01b 
Installing yaml-0.1.4... 

BUILD FAILED 
... 

它的作品,當我運行sudo rbenv install 1.9.3-p327但隨後運行任何東西時,我有我怎麼才能得到它與廚師獨奏安裝須藤甚至ruby -v

[email protected]:~$ ruby -v 
ruby 1.8.7 (2012-02-08 patchlevel 358) [x86_64-linux] 
[email protected]:~$ sudo ruby -v 
ruby 1.9.3p327 (2012-11-10 revision 37606) [x86_64-darwin12.3.0] 

前綴它。我已經嘗試了整個星期,根本無法讓它工作。

回答

4

json要求您爲廚師指定安裝紅寶石的rbenv位置。因爲食譜稱你在系統級別上安裝rbenv,然後在這種情況下用戶lvl是流浪的。

chef.add_recipe "rbenv::system" 
chef.add_recipe "rbenv::vagrant" 

讓我去,改變了JSON這樣:

chef.json = { 
    'rbenv' => { 
    'user_installs' => [ 
     { 
     'user' => 'vagrant', 
     'rubies' => ['1.9.3-p327'], 
     'global' => '1.9.3-p327', 
     'gems' => { 
      '1.9.3-p327' => [ 
      { 'name' => 'bundler' }, 
      { 'name' => 'rake' } 
      ] 
     } 
     } 
    ] 
    } 
} 

同樣,當前rbenv食譜往往有缺陷,所以它的好,在cheffile參考食譜的最新功能標籤的版本。

cookbook 'rbenv', git: 'git://github.com/fnichol/chef-rbenv.git', ref: "v0.7.2" 

像這樣。