2013-03-14 33 views
4

我正在嘗試使用以下烹飪書https://github.com/fnichol/chef-rvm來安裝RVM和Amazon OpsWorks。我想要rvm在用戶tomcat6下運行,所以我包含了配方rvm :: user以及正確的屬性。亞馬遜OpsWorks定製食譜RVM

我得到的錯誤是:

Wed, 06 Mar 2013 20:05:05 +0000 ERROR: Running exception handlers Wed, 06 Mar 2013 20:05:05 +0000 ERROR: Exception handlers complete Wed, 06 Mar 2013 20:05:05 +0000 DEBUG: Re-raising exception: LoadError - no such file to load -- rvm /opt/aws/opsworks/current/site-cookbooks/rvm/recipes/default.rb:29:in require' /opt/aws/opsworks/current/site-cookbooks/rvm/recipes/default.rb:29:in from_file'

而且一段代碼提高異常:

chef_gem 'rvm' do 
action :install 
version '>= 1.11.3.6' 
end 

ruby_block "require rvm" do 
    block do 
     require 'rvm' 
     create_rvm_shell_chef_wrapper 
     create_rvm_chef_user_environment 
    end 
    action :create 
end 

讓我登錄使用ssh的實例,並檢查是否錯誤後或者沒有安裝rvm gem。我看不到列在* LOCAL GEMS *下的rvm。

然後,我用gem_package替換了chef_gem方法,仍然得到了同樣的錯誤。但是這次我查了寶石列表rvm被列出。

任何幫助?提前致謝。

+0

希望這將有助於實施=> http://tickets.opscode.com/browse/CHEF-4008 – mpapis 2013-03-14 21:23:36

回答

0

你確定你使用了最新的rvm食譜嗎?看看recipes/default.rb給你一個錯誤 - 這個文件的內容是不同於你在你的描述中發佈的內容。

4

的問題在這裏強調:https://forums.aws.amazon.com/thread.jspa?threadID=118646

OpsWorks'廚師的實施是相當亞馬遜的限制。當廚師在節點上運行時,它實際上是通過捆綁運行的。由於rvm食譜正在向系統中安裝一個新的gem(rvm)並且試圖使用它,所以它失敗了,因爲rvm gem不是已經是包的一部分(列在Gemfile中)。

截至撰寫本文時,當前的解決方法是opsworks已經實現了一種方法來支持自定義gem的使用。

我已經能夠更新你提到的臺詞:

if defined?(OpsWorks) && defined?(OpsWorks::InternalGems) 
    OpsWorks::InternalGems.internal_gem_package('rvm', :version => node['rvm']['chef_internal_rvm_gem_version']) 
else 
    chef_gem 'rvm' do 
    action :install 
    version '>= 1.11.3.6' 
    end 
end 

讓我知道這對你的作品!

+0

+1,這爲我解決了這個問題 – rubish 2013-05-16 07:10:07