Puppet
如何在 debian stable 的 puppet 提供程序中使用 ruby gem?
我正在嘗試使用需要 ruby gem 的 puppet 提供程序。
它正在 Debian stable (wheezy) 上執行,但出現以下錯誤:
err: Could not run Puppet configuration client: no such file to load -- zabbixapi
問題似乎是 puppet 特別需要 ruby1.8。但是,安裝的 rubygems 版本是 ruby1.9.1。因此,所有安裝的 gem 最終都出現在
/var/lib/gems/1.9.1/gems/
1.8 版的 ruby 中。讓 puppet 程式碼能夠要求 gem 的最簡潔的方法是什麼?只要 rubygems 和 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 執行之間註銷並重新登錄
- 解決抽象層錯誤的問題
但是,我還沒有找到更好的方法來解決它,所以現在就這樣做。