How can I quickly and easily state that a null / blank value is OK on a fact within puppet?
When assembling a custom fact I'm doing something like the following:
/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
This works perfectly except if the file doesn't exist, in which case it will blow up with something like the following when used in Puppet.
Detail: Could not find value for 'hostslocal'
I've been able to work around it with something akin to 'if file not exists write a line that contains only a comment' but that seems kludgy.
Best Answer
Facter has lots of facts that only set under certain circumstances. Before using them you should check if they are undefined.
If you really want your custom fact to always have a value, you can do something like