Как я могу использовать rubygem в марионеточном провайдере в стабильном выпуске Debian?
Я пытаюсь использовать поставщика марионеток, который требует драгоценного камня рубина.
Он работает в стабильной Debian (wheezy), но я получаю следующую ошибку:
err: Could not run Puppet configuration client: no such file to load -- zabbixapi
Проблема, похоже, в том, что куколке требуется именно ruby1.8. Однако установленная версия rubygems предназначена для ruby1.9.1. Поэтому все драгоценные камни, которые будут установлены в конечном итоге в /var/lib/gems/1.9.1/gems/
, который, по-видимому, версия 1.8 ruby не смотрит.
Какой самый лучший способ, чтобы кукольный код мог требовать драгоценных камней? Я не очень задумывался над тем, какую версию ruby использовать, при условии, что она соответствует rubygems и puppet.
1 ответ
Хакерское решение этого заключается в том, чтобы жестко закодировать путь требуемого драгоценного камня в пути загрузки ruby.
file { '/etc/profile.d/rubylib.sh':
content => 'export RUBYLIB=\'/var/lib/gems/1.9.1/gems/zabbixapi-2.4.0/lib\''
}
Это плохо по ряду причин:
- Номера версий жестких кодов
- Нужно запустить куклу несколько раз
- Необходимо выйти и вернуться между марионетками
- Решает проблему в неправильном слое абстракции
Тем не менее, я не нашел лучшего способа ее решения, так что пока это подойдет.