Puppet

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

  • December 9, 2014

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

它正在 Debian stable (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/1.8 版的 ruby​​ 中。

讓 puppet 程式碼能夠要求 gem 的最簡潔的方法是什麼?只要 ruby​​gems 和 puppet 之間是一致的,我並不在乎最終使用哪個版本的 ruby​​。

一個 hacky 解決方案是在 ruby​​ 的載入路徑中硬編碼所需 gem 的路徑。

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

這很糟糕,原因有很多:

  • 硬編碼版本號
  • 需要多次執行人偶
  • 需要在 puppet 執行之間註銷並重新登錄
  • 解決抽象層錯誤的問題

但是,我還沒有找到更好的方法來解決它,所以現在就這樣做。

引用自:https://serverfault.com/questions/649867