如何在 debian stable 上的 puppet 提供程序中使用 ruby​​gem?

如何在 debian stable 上的 puppet 提供程序中使用 ruby​​gem?

我正在尝试使用需要 ruby​​ gem 的 puppet 提供程序

它正在 Debian 稳定版(wheezy)上运行,但我收到以下错误:

err: Could not run Puppet configuration client: no such file to load -- zabbixapi

问题似乎是 puppet 特别需要 ruby​​1.8。但是,安装的 ruby​​gems 版本是 ruby​​1.9.1。因此,所有安装的 gem 都位于 中/var/lib/gems/1.9.1/gems/,大概是 ruby​​ 1.8 版本没有出现在其中。

让 puppet 代码能够需要 gem 的最简洁方法是什么?我并不真正在意最终使用哪个版本的 ruby​​,只要 ruby​​gems 和 puppet 之间一致即可。

答案1

解决此问题的一个方法是将所需 gem 的路径硬编码到 ruby​​ 的加载路径中。

file { '/etc/profile.d/rubylib.sh':
    content => 'export RUBYLIB=\'/var/lib/gems/1.9.1/gems/zabbixapi-2.4.0/lib\''
}

这很糟糕,原因如下:

  • 硬编码版本号
  • 需要多次运行 puppet
  • 需要在 Puppet 运行之间注销并重新登录
  • 在错误的抽象层解决问题

不过我还没找到更好的解决方法,所以暂时就这样了。

相关内容