Как я могу использовать 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\''
}

Это плохо по ряду причин:

  • Номера версий жестких кодов
  • Нужно запустить куклу несколько раз
  • Необходимо выйти и вернуться между марионетками
  • Решает проблему в неправильном слое абстракции

Тем не менее, я не нашел лучшего способа ее решения, так что пока это подойдет.

Другие вопросы по тегам