From 369f7304310f8cff7d3c0cb81932aa8be1488ac2 Mon Sep 17 00:00:00 2001 From: Jeff McCune Date: Tue, 28 Feb 2012 11:53:15 -0800 Subject: (#12357) Make facter_dot_d look in Puppet[:confdir]/facts.d On Windows, we have no folders that match up to the default set of directories the facter_dot_d fact looks in by default. This is a problem because the Puppet Enterprise installer writes out the following facts by default, and our modules require them to be present: % cat /etc/puppetlabs/facter/facts.d/puppet_enterprise_installer.txt fact_stomp_port=61613 fact_stomp_server=puppetmaster fact_is_puppetagent=true fact_is_puppetmaster=true fact_is_puppetconsole=true On windows, the Puppet confdir is quite variable. On 2003 systems we default to the All Users application data directory. On 2008 systems we default to the ProgramData directory. The actual configuration directory varies depending on the Puppet or Puppet Enterprise branding. In order to simplify all of this variable behavior, this patch fixes the problem by automatically looking for facts in `%COMMON_APPDATA%/PuppetLabs/facter/facts.d` This patch paves the way for the MSI installer to use an IniFile element to write custom facts during installation. --- lib/facter/facter_dot_d.rb | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'lib/facter/facter_dot_d.rb') diff --git a/lib/facter/facter_dot_d.rb b/lib/facter/facter_dot_d.rb index b94aacd..8543c7c 100644 --- a/lib/facter/facter_dot_d.rb +++ b/lib/facter/facter_dot_d.rb @@ -11,6 +11,9 @@ # The cache is stored in /tmp/facts_cache.yaml as a mode # 600 file and will have the end result of not calling your # fact scripts more often than is needed + +require 'facter/util/puppet_settings' + class Facter::Util::DotD require 'yaml' @@ -182,3 +185,10 @@ end Facter::Util::DotD.new("/etc/facter/facts.d").create Facter::Util::DotD.new("/etc/puppetlabs/facter/facts.d").create + +# Windows has a different configuration directory that defaults to a vendor +# specific sub directory of the %COMMON_APPDATA% directory. +if Dir.const_defined? 'COMMON_APPDATA' then + windows_facts_dot_d = File.join(Dir::COMMON_APPDATA, 'PuppetLabs', 'facter', 'facts.d') + Facter::Util::DotD.new(windows_facts_dot_d).create +end -- cgit v1.2.3