【问题标题】:Puppet integrated with Apache but unable to start due rubyPuppet 与 Apache 集成但由于 ruby​​ 无法启动
【发布时间】:2017-02-12 12:07:42
【问题描述】:

我已经按照官方文档安装了 Puppet,并且已经安装了 Ruby 1.8.7。

但是通过 rvm 我已经安装了 ruby​​ 2.3.3,然后使用 gem install rack passenger 安装了机架和乘客 gem,并成功安装了 passenger-install-apache2-module

我对puppetmaster.conf做了相应的修改,放到httpd服务的conf.d目录下。

启动 httpd 服务后,我给出了 puppet cert 并显示以下错误

[root@lab puppet-fundamentals-puppetmaster]# puppet cert
/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require': no such file to load -- json (L
oadError)
        from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
        from /usr/lib/ruby/site_ruby/1.8/puppet/module.rb:3
        from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
        from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
        from /usr/lib/ruby/site_ruby/1.8/puppet/parser/files.rb:1
        from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
        from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
        from /usr/lib/ruby/site_ruby/1.8/puppet/parser/templatewrapper.rb:1
        from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
        from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
        from /usr/lib/ruby/site_ruby/1.8/puppet/parser/scope.rb:6
        from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
        from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
        from /usr/lib/ruby/site_ruby/1.8/puppet/parser/methods.rb:2
        from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
        from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
        from /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/method_call.rb:2
        from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
        from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
        from /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast.rb:115
        from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
        from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
        from /usr/lib/ruby/site_ruby/1.8/puppet/parser/parser.rb:11
        from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
        from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
        from /usr/lib/ruby/site_ruby/1.8/puppet/parser.rb:4
        from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
        from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
        from /usr/lib/ruby/site_ruby/1.8/puppet.rb:282
        from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
        from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
        from /usr/lib/ruby/site_ruby/1.8/puppet/util/command_line.rb:12
        from /usr/bin/puppet:7:in `require'

我不明白为什么 Puppet 仍然在查看 ruby​​ 1.8,即使我在 puppetmaster.conf 中提到过

     PassengerRoot /usr/local/rvm/gems/ruby-2.3.3/gems/passenger-5.1.2
     PassengerDefaultRuby /usr/local/rvm/gems/ruby-2.3.3/wrappers/ruby 

有什么方法可以告诉 Puppet 将 ruby​​-2.3.3 作为默认 ruby​​ 来满足其所有需求?

[root@lab ~]# puppet --version
3.8.7
[root@lab ~]#

[root@lab ~]# ruby -v                                                      
ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-linux]                  

[root@lab ~]# rvm all ruby list                                            

rvm rubies                                                                 

=* ruby-2.3.3 [ x86_64 ]               

谢谢。

【问题讨论】:

  • 我不相信 Puppet 3.8.7 支持 Ruby 2.3,甚至 Ruby 2.2。尝试升级到受支持/未过时的 Puppet 版本。
  • @MattSchuchard 谢谢
  • 实际上我可以在这里提出一些其他的东西,但我记得 Puppet 3.x 是针对 Ruby 1.9,可能是 2.0,不太可能是 2.1。

标签: ruby-on-rails ruby apache passenger puppet


【解决方案1】:

尝试创建包装器,请参阅https://rvm.io/deployment/god

rvm wrapper ruby@gemset [scope] [binary-name]

【讨论】:

  • 所以对于我的情况我应该如何提及?类似 rvm 包装器 ruby​​@gemset bootup puppet 或 bootup httpd ?
【解决方案2】:

尝试PassengerRuby 而不是PassengerDefaultRuby

【讨论】:

    猜你喜欢
    • 2017-01-21
    • 2014-08-03
    • 2013-05-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-02
    • 2020-07-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多