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

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

我正在使用 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

总结:

  1. 确保 puppet 提供程序模块已安装并位于模块路径上。
  2. 确保底层第三方工具也已安装。这可以通过添加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)的完整工作示例,请参阅

但是,既然 Chocolatey 提供程序可以自行处理安装,那么只需确保提供程序已安装,然后将以下内容添加到清单中即可:

include chocolatey

将其带回完整周期,看来 cpanm 也可以处理自身安装

include cpanm

相关内容