Puppet
木偶事實的空/空白值
如何快速輕鬆地聲明在 puppet 中的事實可以使用空/空白值?
組裝自定義事實時,我正在執行以下操作:
/puppet/production/modules/hosts/lib/facter
Facter.add(:hostslocal) do setcode do Facter::Util::Resolution.exec("cat /etc/hosts.local 2> /dev/null") end end
這工作得很好,除非文件不存在,在這種情況下,當在 Puppet 中使用時,它會像以下內容一樣爆炸。
Detail: Could not find value for 'hostslocal'
我已經能夠使用類似於“如果文件不存在寫一行只包含評論”的東西來解決它,但這似乎很笨拙。
Facter 有很多僅在特定情況下設置的事實。在使用它們之前,您應該檢查它們是否未定義。
if $::hostslocal != undef { do_your_thing_here }
如果您真的希望您的自定義事實始終具有價值,您可以執行類似的操作
Facter.add(:hostslocal) do setcode do if File.exist? "/etc/hosts.local" Facter::Util::Resolution.exec("cat /etc/hosts.local 2> /dev/null") else "unknown" end end end
在編寫此類自定義事實時,您可以使用 Ruby 的強大功能。因此,只需在執行 exec 操作之前檢查相關文件是否存在。就像是:
Factor.add (: hostslocal) 為 設置程式碼做 如果 File.exist?“/etc/hosts.local” 因素::Util::Resolution.exec("cat /etc/hosts.local 2> /dev/null") 結尾 結尾 結尾
當然未經測試,但這應該是您想要的方向。查看官方文件以獲取有關自定義事實的更多詳細資訊。