Для модуля Puppet Azure требуется установка определенных гемов. Направления https://github.com/puppetlabs/puppetlabs-azure покажите следующий пример:
/opt/puppetlabs/puppet/bin/gem install azure azure_mgmt_compute azure_mgmt_storage azure_mgmt_resources azure_mgmt_network hocon retries --no-ri --no-rdoc
Конкретный двоичный файл gem /opt/puppetlabs/puppet/bin/gem
используется для обеспечения установки драгоценных камней в установочный каталог марионетки и использования связанной версии ruby Puppet.
У ресурса пакета Puppet есть поставщик гемов, но он будет установлен с использованием системного ruby.
Как я могу куколизировать установку драгоценного камня, специфичную для марионетки? Я предпочитаю не использовать exec
ресурс. Есть ли ресурс для puppet-agent для установки гемов?
Я нашел ответ на https://docs.puppetlabs.com/references/4.0.0/type.html#package-provider-puppet_gem
Новым в Puppet v4 является поставщик puppet_gem для ресурса пакета.
package { 'azure' :
provider => 'puppet_gem',
ensure => installed,
}
Смотря на провайдер это действительно раскошеливается на gem
вместо того, чтобы делать что-то в рубине (что, вероятно, вообще невозможно).
Это не настраивается. Вы можете попробовать сделать марионетку agent
(или apply
) бегать с PATH
который предпочитает Ruby / gem Puppet другим копиям. Это может сделать это (но может сломать другие вещи). Конечно, вы теряете возможность устанавливать «системные» драгоценные камни в той же транзакции Puppet.