【问题标题】:Amazon OpsWorks custom cookbook RVMAmazon OpsWorks 自定义说明书 RVM
【发布时间】:2013-03-03 10:39:58
【问题描述】:

我正在尝试使用以下说明书https://github.com/fnichol/chef-rvm 将 RVM 与 Amazon OpsWorks 一起安装。我希望 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 被列出了。

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

【问题讨论】:

标签: ruby amazon-web-services rvm chef-infra


【解决方案1】:

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

OpsWorks 的 Chef 实施受到 Amazon 的严格限制。当 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

让我知道这是否适合你!

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2015-02-14
      • 2013-08-29
      • 2015-12-17
      • 2016-11-03
      • 2017-08-04
      • 2016-06-04
      • 1970-01-01
      • 2011-05-04
      • 2012-08-29
      相关资源
      最近更新 更多