我正在使用 Puppet 来配置 Vagrant 盒子,并希望包含第三方包提供商(https://github.com/torrancew/puppet-cpanm)
该存储库中的 README.md 展示了如何在清单中使用提供程序,但它假设(我相信)有一个 puppet master 拥有或知道这个提供程序。在我的 Vagrant 设置中,我实际上没有 puppet master(或者 Vagrant 充当 puppet master?),所以我不确定如何实际使用包提供程序类(https://github.com/torrancew/puppet-cpanm/blob/master/lib/puppet/provider/package/cpanm.rb)
我需要在我的 Vagrantfile、Puppet 清单或客户机/主机系统配置中的其他地方做什么才能允许我使用这个包提供程序?
答案1
总结:
- 确保 puppet 提供程序模块已安装并位于模块路径上。
- 确保底层第三方工具也已安装。这可以通过添加
include cpanm
到清单中由模块本身处理。
细节
您必须安装提供程序模块,并且modulepath
以便 Puppet 能够看到它。
confine :exists => ['/usr/bin/cpanm', '/usr/bin/perldoc']
commands :cpanm => '/usr/bin/cpanm'
适应性--debug --verbose
表示提供商声明上述项目需要存在才能使提供商处于活动状态。当您使用 运行 Puppet 时,会出现一条消息告诉您提供商不合适,在Vagrant文件像这样:
config.vm.provision :puppet, :options => ["--debug --trace --verbose"] do |puppet|
#other settings here
end
工作示例
有关使用第三方包提供程序(Chocolatey)的完整工作示例,请参阅
- 安装第三方 PM 工具 - https://github.com/ferventcoder/vagrant-windows-puppet/blob/ca98c48807f4f8f60df0938b0ee52078f5668842/boxes/win10x64-vagrant/Vagrantfile#L29
- 确保提供程序本身已安装 -https://github.com/ferventcoder/vagrant-windows-puppet/tree/ca98c48807f4f8f60df0938b0ee52078f5668842/boxes/win10x64-vagrant/puppet
但是,既然 Chocolatey 提供程序可以自行处理安装,那么只需确保提供程序已安装,然后将以下内容添加到清单中即可:
include chocolatey
将其带回完整周期,看来 cpanm 也可以处理自身安装:
include cpanm