I've created a set of functions that exposes the PuppetDB query API
from inside puppet. Feel free to give them a spin and get back to me
with any bugs or feedback.
https://github.com/dalen/puppet-puppetdbquery
They require ruby-restclient, ruby-json and the puppetdb-terminus.
To give you an example of a query you can do inside puppet code using
these functions and PuppetDB:
# Return an array of active nodes with an uptime more than 30 days and
# having the class 'apache'
$hosts = pdbnodequery([ 'and', [ '=', [ 'node', 'active' ], true ],
['>', [ 'fact', 'uptime_days' ], 30 ] ],
[ 'and', [ '=', 'type', 'Class' ], [ '=', 'title', 'Apache' ] ] )"
This can be used for example to populate lists of nodes behind load
balancers and such dynamically instead of writing them down in your
puppet code.
--
Erik Dalén