PuppetDB queries using custom facts

714 views
Skip to first unread message

Alexander Grushin

unread,
Jun 20, 2013, 2:46:19 AM6/20/13
to puppet...@googlegroups.com
Hi, all!

I'm trying to use external facts from Facter 1.7 and everything looks good:

web0 $ cat /etc/facter/facts.d/environment.txt 
environment=productionweb0$
web0 $ facter environment
production
web0 # puppet agent -t
Info: Retrieving plugin
Info: Loading facts in /var/lib/puppet/lib/facter/puppet_vardir.rb
[...]
Notice: Environment name for web0 is production
[...]
Notice: Finished catalog run in 11.25 seconds

But one thing do not leave me in peace - I can't use this fact in PuppetDB API queries, for some reasons it is not visible for PuppetDB:

$ curl -X GET -H 'Accept: application/json' http://puppetdb:8080/v2/facts/environment
$

Is somebody have an experience with using facts in puppetdb queries? Is it possible?

Thanks!

---
Alexander

David Schmitt

unread,
Jun 20, 2013, 2:56:50 AM6/20/13
to puppet...@googlegroups.com
Hi, Alexander,

"environment" is a special variable. It denotes the puppet environment
that is used by the puppetmaster to multiplex into different module
directories. While I have not tested this, I would assume that this is
special cased by many code paths.

Your own example shows that the environment is not honored by the puppet
agent.

Just use a different name for the variable and use it to set the
environment in puppet.conf, if that's what you really want.


Regards, David
> --
> You received this message because you are subscribed to the Google
> Groups "Puppet Users" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to puppet-users...@googlegroups.com.
> To post to this group, send email to puppet...@googlegroups.com.
> Visit this group at http://groups.google.com/group/puppet-users.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>

Alexander Grushin

unread,
Jun 20, 2013, 3:13:20 AM6/20/13
to puppet...@googlegroups.com
Yep, this was a cause.

Great! Thanks, David!

Alexander Grushin

unread,
Jun 20, 2013, 4:19:34 AM6/20/13
to puppet...@googlegroups.com
Interesting...

This fact returned using PuppetDB API query only after I run puppet agent -t manually.
I believe this fact should appear after usual puppet agent daemon run (every 10 minutes), but it doesn't.

And what is more interesting - those entries disappear after a while. Looks like some expiration procedure in action?

$ curl -X GET -H 'Accept: application/json' http://puppetdb:8080/v2/facts --data-urlencode 'query=["=", "name", "appenvironment"]'
[ {
  "certname" : "web0.local",
  "name" : "appenvironment",
  "value" : "production"
}, {
  "certname" : "web98.local",
  "name" : "appenvironment",
  "value" : "production"
}, {
  "certname" : "web99.local",
  "name" : "appenvironment",
  "value" : "production"
} ]

After a while:

$ curl -X GET -H 'Accept: application/json' http://puppetdb:8080/v2/facts --data-urlencode 'query=["=", "name", "appenvironment"]'
[ {
  "certname" : "web97.local",
  "name" : "appenvironment",
  "value" : "production"
}, {
  "certname" : "web98.local",
  "name" : "appenvironment",
  "value" : "production"
} ]

And one more time:
$ curl -X GET -H 'Accept: application/json' http://puppetdb:8080/v2/facts --data-urlencode 'query=["=", "name", "appenvironment"]'
[ {
  "certname" : "web97.local",
  "name" : "appenvironment",
  "value" : "production"
} ]

David Schmitt

unread,
Jun 20, 2013, 5:18:09 AM6/20/13
to puppet...@googlegroups.com
Perhaps you have still an agent running who has loaded an older facter
version?

The default expiration of nodes in puppetdb should be in the order of
days, if it is even enabled by default.


Regards, D.

Alexander Grushin

unread,
Jun 24, 2013, 1:28:41 AM6/24/13
to puppet...@googlegroups.com
You are right, thanks!

Custom fact get disappearing because of periodic run of puppet agent with old facter. Restart solved this problem.

Haani Niyaz

unread,
Dec 14, 2014, 3:52:16 AM12/14/14
to puppet...@googlegroups.com, a.gr...@gmail.com
Hi there, 

I'm running into a similar probelm where the custom fact declaration file is disappearing when I run the puppet agent. What did you restart to resolve the problem?
Reply all
Reply to author
Forward
0 new messages