Age | Commit message (Collapse) | Author |
|
Without this patch the PE modules don't have a way to identify a
filesystem path where it's OK to place variable data related to managing
the target node. This is a problem when a module like pe_compliance
needs to write a wrapper script to the node's filesystem.
This patch addresses the problem by exposing the node's Puppet[:vardir]
setting as a Facter fact.
This fact value will be set to `nil` if Puppet is not loaded into
memory. If Puppet is loaded, e.g. using `facter --puppet` or using
`puppet agent` or `puppet apply` then the fact will automatically set
the value to Puppet[:vardir]
The value of this setting is subject to Puppet's run_mode.
This patch implements a new utility method in the standard library
module named `Facter::Util::PuppetSettings.with_puppet`. The method
accepts a block and will only invoke the block if the Puppet library is
loaded into the Ruby process. If Puppet is not loaded, the method
always returns nil. This makes it easy to define Facter facts that only
give values if Puppet is loaded in memory.
|
|
* 2.2.x:
(#12377) Avoid infinite loop when retrying require json
|
|
* 2.1.x:
(#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.
|
|
This is causing a little confusion, so make the comment match
the behaviour.
|
|
Without this patch applied, the stdlib module does not provide a
root_home fact. This fact is necessary to easily determine the root
account home directory on platforms Puppet is supported on.
The major variations this fact address are:
---
solaris: /
linux: /root
macosx: /var/root
Spec tests using rspec have been provided as well to cover these three
general cases. Windows tests are marked as pending.
|
|
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
|
|
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.
|