2013-03-14 37 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