【问题标题】:userdata ruby script to run on instance startup uses wrong ruby version在实例启动时运行的 userdata ruby​​ 脚本使用了错误的 ruby​​ 版本
【发布时间】:2015-01-28 00:32:59
【问题描述】:

我有一个实例,我想在它启动时运行一个用户脚本。所以我把这段代码放在了userdata中:

Content-Type: multipart/mixed; boundary="===============zCWTbYbXsHmnlc1kxsQr93CA=="
MIME-Version: 1.0

--===============zCWTbYbXsHmnlc1kxsQr93CA==
Content-Type: text/cloud-config; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="cloud-config"

output: { all: '|tee -a /var/log/cloud-init-output.log' }

--===============zCWTbYbXsHmnlc1kxsQr93CA==
Content-Type: text/x-shellscript; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="zz_bootstrap.rb"

#!/usr/bin/ruby

require 'rubygems'
require 'json'

system "sudo gem install aws-sdk"

require 'aws-sdk'

r53=nil
Retrier.new(3,1).run do
  r53 = AWS::Route53.new(   :access_key_id => creds["AccessKeyId"],
                              :secret_access_key => creds["SecretAccessKey"],
                              :region => region)
end

Some_ruby_stuff_that_needs_r53

但是在日志中我得到了这个:

Successfully installed mini_portile-0.6.2
Building native extensions.  This could take a while...
Successfully installed nokogiri-1.6.6.2
Successfully installed aws-sdk-v1-1.61.0
Successfully installed aws-sdk-1.61.0
Parsing documentation for aws-sdk-1.61.0
Installing ri documentation for aws-sdk-1.61.0
Parsing documentation for aws-sdk-v1-1.61.0
Installing ri documentation for aws-sdk-v1-1.61.0
Parsing documentation for mini_portile-0.6.2
Installing ri documentation for mini_portile-0.6.2
Parsing documentation for nokogiri-1.6.6.2
Installing ri documentation for nokogiri-1.6.6.2
Done installing documentation for aws-sdk, aws-sdk-v1, mini_portile, nokogiri after 55 seconds
4 gems installed
/usr/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- aws-sdk (LoadError)
    from /usr/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /var/lib/cloud/instance/scripts/zz_bootstrap.rb:8:in `<main>'
2015-01-27 13:49:46,859 - util.py[WARNING]: Failed running /var/lib/cloud/instance/scripts/zz_bootstrap.rb [1]
2015-01-27 13:49:46,875 - cc_scripts_user.py[WARNING]: Failed to run module scripts-user (scripts in /var/lib/cloud/instance/scripts)
2015-01-27 13:49:46,875 - util.py[WARNING]: Running scripts-user (<module 'cloudinit.config.cc_scripts_user' from '/usr/lib/python2.7/dist-packages/cloudinit/config/cc_scripts_user.pyc'>) failed
Cloud-init v. 0.7.5 finished at Tue, 27 Jan 2015 13:49:47 +0000. Datasource DataSourceEc2.  Up 389.95 seconds

所以我决定在用户​​数据范围之外进行检查:

gilz@AAAA:~$ which ruby
/usr/bin/ruby
gilz@AAAA:~$ ruby -v
ruby 2.1.5p273 (2014-11-13 revision 48405) [x86_64-linux-gnu]
gilz@AAAA:~$ gem list

*** LOCAL GEMS ***

aws-sdk (1.61.0)
aws-sdk-v1 (1.61.0)
bigdecimal (1.2.4)
celluloid (0.15.2)
celluloid-io (0.15.0)
eye (0.6.3)
io-console (0.4.2)
json (1.8.1)
mini_portile (0.6.2)
minitest (4.7.5)
nio4r (1.0.1)
nokogiri (1.6.6.2)
psych (2.0.5)
rake (10.1.0)
rdoc (4.1.0)
sigar (0.7.3)
state_machine (1.2.0)
test-unit (2.1.5.0)
thor (0.19.1)
timers (1.1.0)

因此,即使我在脚本中调用“sudo gem install”,它也会将 gem 安装到错误的 ruby​​ 版本中。这没有 RVM。我不在乎运行哪个 ruby​​ 版本(>1.93),我只需要使用 aws-sdk gem。想法?

谢谢!

【问题讨论】:

    标签: ruby amazon-ec2 ec2-ami ec2-api-tools aws-sdk


    【解决方案1】:

    在初步阶段安装解决了这个问题:

    Content-Type: multipart/mixed; boundary="===============zCWTbYbXsHmnlc1kxsQr93CA=="
    MIME-Version: 1.0
    
    --===============zCWTbYbXsHmnlc1kxsQr93CA==
    Content-Type: text/cloud-config; charset="us-ascii"
    MIME-Version: 1.0
    Content-Transfer-Encoding: 7bit
    Content-Disposition: attachment; filename="cloud-config"
    

    运行命令: - “sudo gem install aws-sdk”

    output: { all: '|tee -a /var/log/cloud-init-output.log' }
    
    --===============zCWTbYbXsHmnlc1kxsQr93CA==
    Content-Type: text/x-shellscript; charset="us-ascii"
    MIME-Version: 1.0
    Content-Transfer-Encoding: 7bit
    Content-Disposition: attachment; filename="zz_bootstrap.rb"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-30
      • 1970-01-01
      • 1970-01-01
      • 2017-02-05
      • 2013-07-03
      相关资源
      最近更新 更多