2013-10-29 75 views
1

我與流浪漢和廚師有這個問題。 我已經準備好使用Vagrantfile和廚師食譜。 基本上vagrantfile是由一些env變量配置的,所以我可以從Vagrantfile創建新的虛擬機,並且所有配置和配置都由廚師完成,但是一旦虛擬機完成,廚師就無法工作。流浪漢提供後沒有發現廚師寶石

當我執行「流浪者提供」我收到此錯誤信息:

/usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs': Could not find chef (>= 0) amongst [bigdecimal-1.1.0, io-console-0.3, json-1.5.4, minitest-2.5.1, rake-0.9.2.2, rdoc-3.9.4] (Gem::LoadError) 

我不能改變的版本太多,不碰壞......你可以從錯誤信息看,有是rvm(1.15.8)。 Ruby版本1.9.3和版本10.12.0中的廚師。

之前,廚師工作肯定,因爲我能夠創建虛擬機... 但是,然後改變了一些東西,我找不到什麼......我來回穿過所有的廚師角色/食譜/食譜,但我無法弄清楚:(

的RVM是爲所有用戶安裝,所以/etc/profile.d/rvm.sh用於ENV設置。

也許你的一些提示可以幫助我,謝謝你

+0

我曾經有過一個類似的問題:廚師寶石已經出現在機器上(/ opt/vagrant-ruby/bin或類似的東西),但是當安裝rvm時,它不再存在於PATH中。然而,我沒有真正解決這個問題,並選擇從源代碼安裝紅寶石沒有rvm而是... – MrRuru

+0

感謝評論,我現在檢查PATH變量,似乎可能有問題...還不確定,但至少有一些東西。我有點想法.. – stibi

+1

http://fnichol.github.io/chef-rvm/顯然定義了訪問Vagrant虛擬機中的chef-solo二進制文件的自定義配方。沒有嘗試,雖然 – MrRuru

回答

0

你需要包括vagrant recipe。它做了兩件事:添加vagrant用戶到rvm組,並安裝廚師獨奏/廚師 - 客戶端包裝腳本。

記住指向使用node['rvm']['vagrant']['system_chef_solo']node['rvm']['vagrant']['system_chef_client']屬性包裝到正確的二進制(取決於系統紅寶石所在地)。

舉例廚師獨奏:

chef.add_recipe "rvm::vagrant" 

chef.json = { 
    :rvm => { 
    :vagrant => { 
     :system_chef_solo => '/usr/lib/ruby/gems/1.8/gems/chef-11.4.0/bin/chef-solo', 
     :system_chef_client => '/usr/lib/ruby/gems/1.8/gems/chef-11.4.0/bin/chef-client' 
    } 
    } 
} 

此外,你還有其他兩個選項:

  • 使用rbenv(這裏是一個cookbook)| 偉大的作品
  • 使用vagrant-omnibus plugin | 由於您的廚師運行安裝rvm和紅寶石由@馬克 - 奧康納建議/還應努力
0

,你必須改變chef-solo是如何被執行纔有的rvm system do chef-solo前綴。這將確保rvm從主廚OmniBus ruby​​或其他任何想要/需要使用的ruby中脫身。

在我vagrantfile,我使用shell供應方運行廚師獨奏這樣的:

# with rvm installed, chef will not work with its ruby. must use system! 
[ -f /usr/local/rvm/bin/rvm ] && pfx="rvm system do" 

$pfx chef-solo -c /vagrant/chef-solo.rb -j /vagrant/chef-solo.js --no-fork 
0

我包括流浪配方爲好,但這並沒有徹底解決問題。

添加以下作爲我的食譜屬性:

default.rvm.vagrant.system_chef_client = "/usr/bin/chef-client" 
default.rvm.vagrant.system_chef_solo = "/usr/bin/chef-solo" 

,因爲我的默認廚師的客戶端和廚師獨奏可執行文件是在/ usr/bin中

的RVM流浪配方增加了一些包裝腳本放入/ usr/local/bin目錄。在嘗試運行rvm provision後,如果它已經完全忽略了/ usr/local/bin中的chef-clientchef-solo可執行文件,

要解決這個問題,我還增加了以下內容我Vagrantfile,其中明確設置$PATH尋找到/ usr/local/bin目錄第一:

chef.binary_env="PATH=/usr/local/bin:/usr/bin:/usr/sbin:/bin" 
相關問題