I also like to embed facts with bash logic using bash startup files in
/etc/profile.d/puppet.sh

The puppet labs FAQ has a write up on it.
Can I access environmental variables with Facter?

Not directly no but Facter has a special types of facts that can be set from
environment variables. Any environment variable with a prefix of
FACTER<http://puppetlabs.com/projects/facter> will
be taken by Facter and converted into a fact, for example:

$ FACTER_FOO="bar"
$ export FACTER_FOO
$ facter | grep 'foo'
  foo => bar

The value of the FACTER_FOO environmental variable would now be available in
your Puppet manifests as $foo with a value of ‘bar’.
-Tom

Thomas A. McGonagle
t...@dataero.com
Google Voice: 617-229-5185



On Fri, Apr 9, 2010 at 1:38 PM, Pete Emerson <pemer...@gmail.com> wrote:

> On Apr 9, 9:04 am, Pete Emerson <pemer...@gmail.com> wrote:
> > I see the instructions for creating custom facter recipes here:
> >
> > http://projects.reductivelabs.com/projects/puppet/wiki/Adding_Facts
> >
> > and in this thread, James Turnbull suggests that Facter might some day
> > support other languages besides ruby:
> >
> > http://groups.google.com/group/puppet-users/browse_thread/thread/8c12...
> >
> > He writes:
> > > Agreed.  That'd be a useful feature and if we'd probably do it like
> > > Nagios plug-ins do - doesn't matter what the language is as long as
> they
> > > output data that the Facter API can parse into facts - Perl, Python, C,
> > > Rexx (*coughs*), etc.
> >
> > Has such a feature been released in the latest versions of facter /
> puppet ?
> >
> > I'm experimenting with puppet with no puppetmaster, but need to add
> > facts that my puppet_node_classifier usually provides. I assume using
> > facter is the way to go (I have not played with facter yet). Is there
> > an alternate solution for getting my own facts into a puppet node
> > without a puppetmaster?
> >
> > Pete
>
> Okay, I think I got it. Pretty exciting, especially given I don't know
> ruby at all. Comments appreciated, for sure, as I'm not positive that
> I might be trying to fit a square peg into a round hole.
>
> I've made a fact that loads results from a perl script.
>
> 1) The sample perl script gives output just like a puppet node
> classifier would using YAML
> 2) The ruby parses the output of the perl script and generates facts.
>
> ################### /usr/local/bin/facter.pl
> #!/usr/bin/perl -w
>
> print <<END
> ---
> parameters:
>  dongle: "special_dongle_value"
> END
>
> ################### /var/lib/puppet/lib/facter/classifier.rb
>
> require "yaml"
>
> yaml_obj = YAML::load(%x{/usr/local/bin/facter.pl})
> yaml_obj['parameters'].each { |key, value|
>        Facter.add(key) do
>                setcode do
>                        value
>                end
>        end
> }
>
> #################### Manual run
>
> # export FACTERLIB=/var/lib/puppet/lib/facter ; facter | grep dongle
> dongle => special_dongle_value
>
> #################### /etc/puppet/puppet.conf additions
> pluginsync = true
> factpath = $vardir/lib/facter
>
>
> #################### test.pp
>
> exec { "dongle":
>        command => "/bin/echo '$dongle' > /tmp/dongle.txt"
> }
>
> ###################### Puppet run
>
> # puppet -v test.pp
> info: Loading facts in classifier
> info: Applying configuration version '1270834249'
> notice: //Exec[dongle]/returns: executed successfully
> # cat /tmp/dongle.txt
> special_dongle_value
>
> ##############################################
>
> Pete
>
> --
> You received this message because you are subscribed to the Google Groups
> "Puppet Users" group.
> To post to this group, send email to puppet-us...@googlegroups.com.
> To unsubscribe from this group, send email to
> puppet-users+unsubscr...@googlegroups.com<puppet-users%2bunsubscr...@googlegroups.com>
> .
> For more options, visit this group at
> http://groups.google.com/group/puppet-users?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To post to this group, send email to puppet-us...@googlegroups.com.
To unsubscribe from this group, send email to 
puppet-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en.

Reply via email to