summaryrefslogtreecommitdiff
path: root/lib/facter
diff options
context:
space:
mode:
authorJeff McCune <jeff@puppetlabs.com>2012-02-28 11:53:15 -0800
committerJeff McCune <jeff@puppetlabs.com>2012-03-06 16:57:01 -0800
commit369f7304310f8cff7d3c0cb81932aa8be1488ac2 (patch)
tree5b5e0a276bc36281c355d79bb27140d40eb01e50 /lib/facter
parenta452f6a9af21d9ec5f34e6cda40af0ec3971b422 (diff)
(#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.
Diffstat (limited to 'lib/facter')
-rw-r--r--lib/facter/facter_dot_d.rb10
1 files changed, 10 insertions, 0 deletions
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