Sha256: 9293080d5f3199aa2fcfd1660bc11de8c7408bf8f2d12f4178e8e0396901f700

Contents?: true

Size: 1.34 KB

Versions: 50

Compression:

Stored size: 1.34 KB

Contents

Puppet Specific Facts
=====================

Facter is meant to stand alone and apart from Puppet.  However, Facter often
runs inside Puppet and all custom facts included in the stdlib module will
almost always be evaluated in the context of Puppet and Facter working
together.

Still, we don't want to write custom facts that blow up in the users face if
Puppet is not loaded in memory.  This is often the case if the user runs
`facter` without also supplying the `--puppet` flag.

Ah! But Jeff, the custom fact won't be in the `$LOAD_PATH` unless the user
supplies `--facter`! You might say...

Not (always) true I say!  If the user happens to have a CWD of
`<modulepath>/stdlib/lib` then the facts will automatically be evaluated and
blow up.

In any event, it's pretty easy to write a fact that has no value if Puppet is
not loaded.  Simply do it like this:

    Facter.add(:node_vardir) do
      setcode do
        # This will be nil if Puppet is not available.
        Facter::Util::PuppetSettings.with_puppet do
          Puppet[:vardir]
        end
      end
    end

The `Facter::Util::PuppetSettings.with_puppet` method accepts a block and
yields to it only if the Puppet library is loaded.  If the Puppet library is
not loaded, then the method silently returns `nil` which Facter interprets as
an undefined fact value.  The net effect is that the fact won't be set.

Version data entries

50 entries across 50 versions & 5 rubygems

Version Path
freighthop-0.0.1 modules/stdlib/README_DEVELOPER.markdown
service_kiosk-0.5.6 provision/modules/stdlib/README_DEVELOPER.markdown
service_kiosk-0.5.5 provision/modules/stdlib/README_DEVELOPER.markdown
service_kiosk-0.5.4 provision/modules/stdlib/README_DEVELOPER.markdown
service_kiosk-0.5.3 provision/modules/stdlib/README_DEVELOPER.markdown
service_kiosk-0.5.2 provision/modules/stdlib/README_DEVELOPER.markdown
service_kiosk-0.5.1 provision/modules/stdlib/README_DEVELOPER.markdown
service_kiosk-0.5.0 provision/modules/stdlib/README_DEVELOPER.markdown
puppetmodule-stdlib-4.0.2 README_DEVELOPER.markdown
puppetmodule-stdlib-4.0.1 README_DEVELOPER.markdown