]> gitweb.fluxo.info Git - puppet-stdlib.git/commitdiff
(#12357) Make facter_dot_d look in Puppet[:confdir]/facts.d
authorJeff McCune <jeff@puppetlabs.com>
Tue, 28 Feb 2012 19:53:15 +0000 (11:53 -0800)
committerJeff McCune <jeff@puppetlabs.com>
Wed, 7 Mar 2012 00:57:01 +0000 (16:57 -0800)
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

index b94aacdeb14218065a52bbd00a4cc200f1797420..8543c7c620307ee4d439590af71d925c627565f4 100644 (file)
@@ -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