Commit graph

8 commits

Author SHA1 Message Date
Hailee Kenney
5fb0ddcf78 (#2157) Make facts_dot_d compatible with external facts
Since facts_dot_d will eventually be removed and replaced by
external facts, warn users who are using a ttl on their external
facts that this feature will not be in Facter external facts.

Provide a link to a page explaining how to cache fact values
without the ttl functionality.
2012-07-10 15:24:33 -07:00
Jeff McCune
ea43e86516 (#13091) Fix LoadError exception with puppet apply
Puppet apply does not add the stdlib lib directory to the $LOAD_PATH.
This is a problem because the puppet_vardir fact requires the
puppet_settings library to be available for the `with_puppet` utility
method.

Without this patch, puppet apply will result in the following error:

    $ puppet apply --modulepath=/vagrant/modules -e 'notice $puppet_vardir'
    warning: Could not load fact file stdlib/lib/facter/puppet_vardir.rb: no such file to load -- facter/util/puppet_settings
    notice: Scope(Class[main]):
    notice: Finished catalog run in 0.01 seconds

With this patch applied, puppet apply works as expected:

    $ puppet apply --modulepath=/vagrant/modules.pe -e 'notice $puppet_vardir'
    notice: Scope(Class[main]): /Users/jeff/.puppet/var
    notice: Finished catalog run in 0.01 seconds

This patch defensively tries to load facter/util/puppet_settings.  If it cannot
load it, it falls back to trying to explicitly locate and load the library.

Once puppet is fixed such that a modules lib directory is truly in the
$LOAD_PATH, the fall back implementation will no longer be exercised since the
LoadError should not be raised.
2012-03-13 16:44:21 -07:00
Jeff McCune
369f730431 (#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.
2012-03-06 16:57:01 -08:00
Ken Barber
d6fdfaba11 Merge branch '2.2.x'
* 2.2.x:
  (#12377) Avoid infinite loop when retrying require json
2012-02-07 13:44:58 +00:00
Jeff McCune
24f7095e28 (#12377) Avoid infinite loop when retrying require json
Without this patch an infinite loop will be entered if the json and
rubygems libraries are not available.

This patch fixes the problem by retrying the `require 'json'` only if
rubygems was successfully loaded for the first time.  Subsequent
attempts to load rubygems will cause the LoadError exception from a
missing json library to be re-raised.

Thanks to Krzysztof Wilczynski for pointing out this issue.
2012-02-06 17:54:41 +00:00
Richard Clamp
19ffcac54b Update the documentation comment
This is causing a little confusion, so make the comment match
the behaviour.
2012-02-03 14:19:50 +00:00
Jeff McCune
d30e7f81d0 (#9080) Make facts.d match Facter 2.0
Based on feedback from Luke, the facts.d directory should at least match
the directory that will be used by Facter 2.0.

Reading #2157 I believe the Facter 2.0 facts.d feature is reasonably API
compatible with this custom fact from R.I. so I'm comfortable using the
same filesystem path.

Change in behavior:  Now look for facts in:
 * /etc/facter/facts.d
 * /etc/puppetlabs/facter/facts.d
2011-08-18 10:44:40 -07:00
Jeff McCune
95c88a1305 (#9080) Add facts from /etc/puppetlabs/facts.d
This fact is a direct copy of R.I.'s work at
https://github.com/ripienaar/facter-facts

This is necessary plumbing to allow the installer to write a simple text
file based on the role the node is receiving.  For example:

    $ cat /etc/puppetlabs/facts.d/puppet_enterprise_mcollective.txt
    fact_stomp_port=61613
    fact_stomp_server=puppetmaster
    fact_is_puppetagent=true
    fact_is_puppetmaster=true

The mcollectivepe module relies on these facts being set and we need a
persistent place to write them during the interview process and later
read them when puppet agent runs to configure MCollective on the agent
systems.

Since stdlib is a public module, both /etc/facts.d and
/etc/puppetlabs/facts.d are scanned for static facts.
2011-08-17 16:25:29 -07:00