Puppet

在 Vagrant 中將包提供程序添加到 Puppet

  • September 10, 2015

我正在使用 Puppet 來配置 Vagrant 框,並希望包含一個 3rd 方包提供程序(https://github.com/torrancew/puppet-cpanm

該 repo 中的 README.md 顯示瞭如何在清單中使用提供程序,但它假設(我相信)一個擁有或知道該提供程序的 puppet master。使用我的 Vagrant 設置,我實際上並沒有一個 puppet master(或者 Vagrant 充當一個?)所以我不確定如何實際使用包提供程序類(https://github.com/torrancew/puppet-cpanm /blob/master/lib/puppet/provider/package/cpanm.rb )

我需要在我的 Vagrantfile、我的 Puppet 清單或來賓/主機系統配置的其他地方做些什麼來允許我使用這個包提供程序?

tl;博士:

  1. 確保已安裝 puppet 提供程序模組並位於模組路徑上。
  2. 確保還安裝了底層的 3rd 方工具。這可以由模組本身通過添加include cpanm到您的清單來處理。

細節

您必須安裝提供程序模組並在modulepathPuppet 上才能看到它。

使用提供者總是經過適用性檢查,您可以在提供者的命令/限制中看到:

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

適用性意味著提供者聲明上述項目需要存在才能使提供者處於活動狀態。有一條消息告訴您何時提供者不合適,當您使用 執行 Puppet 時會顯示該消息,--debug --verboseVagrantfile中完成,如下所示:

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

工作範例

有關使用第三方包提供程序 (Chocolatey) 的完整工作範例,請參閱

然而,既然 Chocolatey 提供者可以自己處理安裝,它變得像確保提供者已安裝然後將以下內容添加到清單中一樣簡單:

include chocolatey

將其帶回完整週期,看來 cpanm 也可以自行安裝

include cpanm

引用自:https://serverfault.com/questions/721285