Назад | Перейти на главную страницу

Добавить поставщика пакетов в Puppet в Vagrant

Я использую 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 или в другом месте в конфигурации гостевой / хост-системы, чтобы я мог использовать этого поставщика пакетов?

tl; dr:

  1. Убедитесь, что модуль поставщика марионеток установлен и находится в пути к модулю.
  2. Убедитесь, что также установлен базовый сторонний инструмент. С этим можно справиться самим модулем, добавив 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