For anyone else who sets the Puppet config_version
paramater to return
the current SVN or Git version of your configuration, here’s a fact that
grabs that version (by parsing the cached YAML catalog) and sets it as a
fact called “catalog_config_version”. It can then be used for
sanity-checking your nodes, looking up via the Inventory Service, or you
can display it in the Dashboard using my patch: Patch to Puppet
Dashboard 1.2.10 to show arbitrary facts in the main node
table.
#
# facter fact for last applied config version, skeleton from /var/lib/puppet/client_yaml/catalog/fqdn.yaml
#
require 'puppet'
require 'yaml'
require 'facter'
localconfig = ARGV[0] || "#{Puppet[:clientyamldir]}/catalog/#{ Facter.fqdn }.yaml"
unless File.exist?(localconfig)
puts("Can't find #{ Facter.fqdn }.yaml")
exit 1
end
lc = File.read(localconfig)
begin
pup = Marshal.load(lc)
rescue TypeError
pup = YAML.load(lc)
rescue Exception => e
raise
end
if pup.class == Puppet::Resource::Catalog
Facter.add("catalog_config_version") do
setcode do
pup.version
end
end
else
Facter.add("catalog_config_version") do
setcode do
"unknown"
end
end
end
All of my facts are now available in a GitHub repository: https://github.com/jantman/puppet-facter-facts.
Comments
comments powered by Disqus