Amazon ec2 试图使用rubber和Get-NoMethodError部署JORR应用程序:未定义的方法'authorize_port_range';零级:零级

Amazon ec2 试图使用rubber和Get-NoMethodError部署JORR应用程序:未定义的方法'authorize_port_range';零级:零级,amazon-ec2,jruby,jrubyonrails,fog,Amazon Ec2,Jruby,Jrubyonrails,Fog,这是我第一次使用rubber或部署到AmazonEC2。我正在关注这一点。我在谷歌上搜索了所有地方,似乎没有其他人有这个问题。这是我运行cap ruber:create_staging时的控制台日志: user529789@user529789-M15x:~/develops/grouper$ cap rubber:create_staging triggering load callbacks * executing `rubber:init' * executing `rub

这是我第一次使用rubber或部署到AmazonEC2。我正在关注这一点。我在谷歌上搜索了所有地方,似乎没有其他人有这个问题。这是我运行
cap ruber:create_staging
时的控制台日志:

user529789@user529789-M15x:~/develops/grouper$ cap rubber:create_staging
    triggering load callbacks
  * executing `rubber:init'
  * executing `rubber:create_staging'
Hostname to use for staging instance [production]: 
Roles to use for staging instance [apache,app,collectd,common,db:primary=true,elasticsearch,examples,graphite_server,graphite_web,graylog_elasticsearch,graylog_mongodb,graylog_server,graylog_web,haproxy,mongodb,monit,passenger,postgresql,postgresql_master,web,web_tools]: 
  * executing `rubber:create'
Excon nonblock is not supported by your OpenSSL::SSL::SSLSocket
Excon nonblock is not supported by your OpenSSL::SSL::SSLSocket
  * Creating new security group: grouper_production_default
  * Creating new rule: {"source_group_name"=>"grouper_production_default", "source_group_account"=>"<account id redacted>"}
[DEPRECATION] authorize_group_and_owner is deprecated, use authorize_port_range with :group option instead
  * Creating new rule: {"protocol"=>"tcp", "from_port"=>"22", "to_port"=>"22", "source_ips"=>["0.0.0.0/0"]}
NoMethodError: undefined method `authorize_port_range' for nil:NilClass
  add_security_group_rule at /home/user529789/.rvm/gems/jruby-1.6.7.2@grouper/gems/rubber-2.1.0/lib/rubber/cloud/fog.rb:182
                     send at org/jruby/RubyKernel.java:2088
           method_missing at /home/user529789/.rvm/gems/jruby-1.6.7.2@grouper/gems/rubber-2.1.0/lib/rubber/thread_safe_proxy.rb:13
     sync_security_groups at /home/user529789/.rvm/gems/jruby-1.6.7.2@grouper/gems/rubber-2.1.0/lib/rubber/recipes/rubber/security_groups.rb:221
                     each at org/jruby/RubyArray.java:1615
     sync_security_groups at /home/user529789/.rvm/gems/jruby-1.6.7.2@grouper/gems/rubber-2.1.0/lib/rubber/recipes/rubber/security_groups.rb:220
                     each at org/jruby/RubyArray.java:1615
     sync_security_groups at /home/user529789/.rvm/gems/jruby-1.6.7.2@grouper/gems/rubber-2.1.0/lib/rubber/recipes/rubber/security_groups.rb:214
                     each at org/jruby/RubyArray.java:1615
     sync_security_groups at /home/user529789/.rvm/gems/jruby-1.6.7.2@grouper/gems/rubber-2.1.0/lib/rubber/recipes/rubber/security_groups.rb:208
    setup_security_groups at /home/user529789/.rvm/gems/jruby-1.6.7.2@grouper/gems/rubber-2.1.0/lib/rubber/recipes/rubber/security_groups.rb:51
          create_instance at /home/user529789/.rvm/gems/jruby-1.6.7.2@grouper/gems/rubber-2.1.0/lib/rubber/recipes/rubber/instances.rb:255
          create_instance at /home/user529789/.rvm/gems/jruby-1.6.7.2@grouper/gems/rubber-2.1.0/lib/rubber/recipes/rubber/instances.rb:254
         create_instances at /home/user529789/.rvm/gems/jruby-1.6.7.2@grouper/gems/rubber-2.1.0/lib/rubber/recipes/rubber/instances.rb:217
                     call at org/jruby/RubyProc.java:270
                     call at org/jruby/RubyProc.java:224
user529789@user529789-M15x:~/developments/grouper$cap ruber:create\u staging
触发加载回调
*执行'ruber:init'
*执行“rubber:create_staging”
用于暂存实例[生产]的主机名:
用于登台实例的角色[apache、app、collectd、common、db:primary=true、elasticsearch、示例、graphite\u服务器、graphite\u web、graylog\u elasticsearch、graylog\u mongodb、graylog\u服务器、graylog\u web、haproxy、mongodb、monit、passenger、postgresql、postgresql\u master、web、web、web\u工具]:
*执行“橡皮:创建”
OpenSSL::SSL::SSLSocket不支持Excon nonblock
OpenSSL::SSL::SSLSocket不支持Excon nonblock
*创建新的安全组:grouper\u production\u默认值
*正在创建新规则:{“源\组\名称”=>“grouper\生产\默认值”,“源\组\帐户”=>“”
[DEPRECATION]authorize\u group\u和\u owner不推荐使用,请改用authorize\u port\u range with:group选项
*正在创建新规则:{“协议”=>“tcp”,“从\u端口”=>“22”,“到\u端口”=>“22”,“源\u IP”=>[“0.0.0.0/0”]}
NoMethodError:nil:NilClass的未定义方法“authorize\u port\u range”
在/home/user529789/.rvm/gems/jruby-1.6.7中添加安全组规则。2@grouper/gems/ruber-2.1.0/lib/ruber/cloud/fog.rb:182
发送至org/jruby/RubyKernel.java:2088
方法_在/home/user529789/.rvm/gems/jruby-1.6.7中缺失。2@grouper/gems/ruber-2.1.0/lib/ruber/thread\u safe\u proxy.rb:13
同步/home/user529789/.rvm/gems/jruby-1.6.7中的安全组。2@grouper/gems/ruber-2.1.0/lib/ruber/recipes/ruber/security_groups.rb:221
分别位于org/jruby/RubyArray.java:1615
同步/home/user529789/.rvm/gems/jruby-1.6.7中的安全组。2@grouper/gems/ruber-2.1.0/lib/ruber/recipes/ruber/security_groups.rb:220
分别位于org/jruby/RubyArray.java:1615
同步/home/user529789/.rvm/gems/jruby-1.6.7中的安全组。2@grouper/gems/ruber-2.1.0/lib/ruber/recipes/ruber/security_groups.rb:214
分别位于org/jruby/RubyArray.java:1615
同步/home/user529789/.rvm/gems/jruby-1.6.7中的安全组。2@grouper/gems/ruber-2.1.0/lib/ruber/recipes/ruber/security_groups.rb:208
在/home/user529789/.rvm/gems/jruby-1.6.7中设置安全组。2@grouper/gems/ruber-2.1.0/lib/ruber/recipes/ruber/security_groups.rb:51
在/home/user529789/.rvm/gems/jruby-1.6.7创建_实例。2@grouper/gems/ruber-2.1.0/lib/ruber/recipes/ruber/instances.rb:255
在/home/user529789/.rvm/gems/jruby-1.6.7创建_实例。2@grouper/gems/ruber-2.1.0/lib/ruber/recipes/ruber/instances.rb:254
在/home/user529789/.rvm/gems/jruby-1.6.7创建_实例。2@grouper/gems/ruber-2.1.0/lib/ruber/recipes/ruber/instances.rb:217
访问org/jruby/RubyProc.java:270
访问org/jruby/RubyProc.java:224

我的猜测是它在寻找一个范围,在堆栈跟踪中,你给出的范围是从一个端口到同一个端口,ruby,尤其是jruby可能错误地分析了端口范围

您可以尝试在irb上运行您的jruby版本

(22..22)。点击a
,看看你能得到什么。在mri中,您会得到
[22]
,但在jruby中,可能存在实现错误

我认为失败时正在执行的代码如下:

编辑


在寻找了几分钟之后,很明显rubber将参数传递给了fog gem,而且我非常确定,即使范围可能会解决,fog使用它的方式也需要一个范围。您可以尝试从21到23或22到23的范围,看看这是否能让您克服错误。另外,请注意,您使用的橡胶版本远远落后于主版本。我没有任何参考资料来说明这是否是需要的,但您应该知道这一点。祝你好运。

对我有效的解决办法是去 橡胶

并将与安全组相关的所有选项从“true”设置为“false” 我完全不确定这会有什么影响,但它似乎已经通过了