4

我正在尝试使用以下食谱https://github.com/fnichol/chef-rvm使用 Amazon OpsWorks 安装 RVM 。我希望 rvm 在用户 tomcat6 下运行,所以我包含了具有正确属性的配方 rvm::user。

我得到的错误是:

2013 年 3 月 6 日星期三 20:05:05 +0000 错误:运行异常处理程序 2013 年 3 月 6 日星期三 20:05:05 +0000 错误:异常处理程序完成 2013 年 3 月 6 日星期三 20:05:05 +0000 调试:重新引发异常:LoadError - 没有要加载的文件 - 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:infrom_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 ,仍然得到同样的错误。但是这次当我检查 gem list rvm 时列出了。

有什么帮助吗?提前致谢。

4

2 回答 2

4

问题在这里突出显示:https ://forums.aws.amazon.com/thread.jspa?threadID=118646

OpsWorks 的厨师实施受到亚马逊的严格限制。当 chef 在节点上运行时,它实际上是通过一个包运行的。由于 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

让我知道这是否适合您!

于 2013-04-25T02:44:46.117 回答
0

您确定您使用的是最新的 rvm 食谱吗?查看给您错误的recipes/default.rb - 此文件的内容与您在描述中发布的内容不同。

于 2013-03-27T18:55:39.843 回答