在Vagrant中向Puppet添加包提供程序

我正在使用Puppet来configurationVagrant box,并希望包含第三方软件包提供者( https://github.com/torrancew/puppet-cpanm )

该回购协议中的README.md显示了如何在清单中使用提供者,但是假设(我相信)这个提供者有或知道这个提供者。 有了我的stream浪安装,我真的没有一个木偶大师(或stream浪者作为一个?),所以我不知道如何实际使用包提供程序类( https://github.com/torrancew/puppet-cpanm /blob/master/lib/puppet/provider/package/cpanm.rb )

我需要做什么,无论是在我的Vagrantfile,我的Puppet清单,还是在guest / host系统configuration中的其他地方,我都可以使用这个软件包提供程序?

TL;博士:

  1. 确保木偶提供程序模块已安装并位于模块path中。
  2. 确保底层的第三方工具也已安装。 这可以由模块本身通过添加include cpanm到你的清单来处理。

细节

您必须安装提供程序模块并在Puppet的模块modulepath中查看它。

使用提供者总是会经过适当性检查 ,您可以在提供者的命令/限制中看到:

 confine :exists => ['/usr/bin/cpanm', '/usr/bin/perldoc'] commands :cpanm => '/usr/bin/cpanm' 

适用性意味着提供者声明提供者需要存在以上项目才能激活。 有一条消息告诉你什么时候一个提供者不适合,当你使用--debug --verbose运行Puppet时,会出现在Vagrantfile中,如下所示:

 config.vm.provision :puppet, :options => ["--debug --trace --verbose"] do |puppet| #other settings here end 

工作示例

有关使用第三方软件包提供程序(巧克力类)的完整示例,请参阅

但是,现在Chocolatey提供程序可以处理自己的安装,就像确保安装提供程序一样简单,然后将以下代码添加到清单中:

 include chocolatey 

回到完整的循环,似乎cpanm也可以处理安装本身 :

 include cpanm