ruby - Amazon OpsWorks 自定义说明书 RVM

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

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

我得到的错误是:

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: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。

然后我将 chef_gem 方法替换为 gem_package,但仍然出现相同的错误。但是这次当我检查 gem list rvm 时列出了。

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

最佳答案

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

OpsWorks 的 Chef 实现受到 Amazon 的相当大的限制。当 chef 在节点上运行时,它实际上是通过 bundle 运行的。由于 rvm cookbook 正在系统中安装一个新的 gem (rvm) 并试图使用它,它失败了,因为 rvm gem already 不是包的一部分(在 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

让我知道这是否适合您!

关于ruby - Amazon OpsWorks 自定义说明书 RVM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15420155/

相关文章:

arrays - Ruby:将 int 和存储转换为数组

ruby - 如何截断哈希中的数据以使生成的 JSON 不超过 n 个字节?

sql-server - TinyTds - Adaptive 服务器不可用或不存在

amazon-web-services - 尝试使用 cloudformation 添加记录集时,Cloudformation 找不到托管区域名称

node.js - AWS SNS - 无效参数 - 电话号码无效,无法发布到。仅限特定电话号码

ruby - 无法在 Cygwin 中使用 RVM 安装 ruby​​ - curl SSL 证书问题

ruby - Ruby 是否有类似于 Lodash 中的 pluck(arr, key) 的功能?

javascript - 如何使用 Elasticsearch JavaScript SDK 连接到 AWS Elasticsearch?

ruby - RVM 没有安装/usr/local/rvm/bin/ruby 或/usr/local/rvm/bin/gem?

ruby - 无法通过 RVM 在 Mac 10.8 上安装 ruby​​ 1.8.7