在 RVM 安装中让 Puppet 运行而不覆盖我的 gem

在 RVM 安装中让 Puppet 运行而不覆盖我的 gem

我有一套傀儡装置,其中包含一个傀儡大师和几个节点 - 它可以按预期工作。

但是 - 在我正在工作的最新节点上,我需要安装 rvm/ruby+nginx/passenger。这是使用这些 puppet 模块完成的

maestrodev-rvm(v1.13.1)puppet-nginx(v0.6.0)

所有这些都已安装并正常工作——我可以进行捆绑安装并确认它已安装到正确的 gemset 中,如果我转到不同的文件夹,我可以确认 gem 列表没有为这个 gemset 拾取 gem。

访问我的应用程序也可以正常工作并产生预期的结果。

到目前为止一切顺利……问题在下次运行 puppet 时开始出现 - 这导致我所有带有本机扩展的 gem 都崩溃。我收到错误:

Message from application: incompatible library version - /usr/local/rvm/gems/ruby-2.3.1@robot/gems/http_parser.rb-0.6.0/lib/ruby_http_parser.so (LoadError)

当比较 puppet 运行之前/之后的文件内容(使用 md5sum)时,我得到了不同的校验和。

好像我在运行时得到了一些意外的输出

/opt/puppetlabs/puppet/bin/gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 2.2.5
  - RUBY VERSION: 2.1.9 (2016-03-30 patchlevel 490) [x86_64-linux]
  - INSTALLATION DIRECTORY: /usr/local/rvm/gems/ruby-2.3.1
  - RUBY EXECUTABLE: /opt/puppetlabs/puppet/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/local/rvm/gems/ruby-2.3.1/bin
  - SPEC CACHE DIRECTORY: /root/.gem/specs
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
     - /usr/local/rvm/gems/ruby-2.3.1
     - /usr/local/rvm/gems/ruby-2.3.1@global
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /usr/local/rvm/gems/ruby-2.3.1/bin
     - /usr/local/rvm/gems/ruby-2.3.1@global/bin
     - /usr/local/rvm/rubies/ruby-2.3.1/bin
     - /usr/local/sbin
     - /usr/local/bin
     - /usr/sbin
     - /usr/bin
     - /sbin
     - /bin
     - /opt/puppetlabs/bin
     - /usr/local/rvm/bin

为什么 GEM PATHS 指向 ruby​​-2.3.1?使用与 puppet 捆绑的 ruby​​ 时,如何控制此值?我只能在 puppetserver 文档中找到更改 gem 路径的配置。

相关内容