Я использую Puppet для подготовки окна Vagrant и хочу добавить стороннего поставщика пакетов (https://github.com/torrancew/puppet-cpanm)
README.md в этом репо показывает, как использовать поставщика в манифесте, но предполагает (я считаю) хозяин марионеток, который имеет этого поставщика или знает о нем. С моей настройкой Vagrant у меня на самом деле нет мастера марионеток (или Vagrant действует как один?), Поэтому я не уверен, как на самом деле использовать класс поставщика пакетов (https://github.com/torrancew/puppet-cpanm/blob/master/lib/puppet/provider/package/cpanm.rb)
Что мне нужно сделать в моем Vagrantfile, моем манифесте (-ах) Puppet или в другом месте в конфигурации гостевой / хост-системы, чтобы я мог использовать этого поставщика пакетов?
include cpanm
в ваш манифест (ы).У вас должен быть установлен модуль провайдера и modulepath
чтобы Марионетка это увидела.
Использование провайдера всегда проходит через проверка пригодности, который вы можете увидеть в команды / ограничения провайдера:
confine :exists => ['/usr/bin/cpanm', '/usr/bin/perldoc']
commands :cpanm => '/usr/bin/cpanm'
Пригодность означает, что поставщик заявляет, что перечисленные выше элементы должны существовать для того, чтобы поставщик был активен. Если поставщик не подходит, появляется сообщение, которое появляется, когда вы запускаете Puppet с --debug --verbose
, сделано в Vagrantfile вот так:
config.vm.provision :puppet, :options => ["--debug --trace --verbose"] do |puppet|
#other settings here
end
Полный рабочий пример использования стороннего поставщика пакетов (Chocolatey) см.
Однако теперь, когда поставщик Chocolatey может справиться с установкой самостоятельно, становится так же просто, как убедиться, что поставщик установлен, а затем добавить в манифест следующее:
include chocolatey
Возвращая полный цикл, оказывается, что cpanm также может ручная установка сама:
include cpanm