PuppetDB CLI
For Puppet Enterprise you have the ability to install the PuppetDB CLI via the
pe-client-tools package. If you are installing pe-client-tools please see
the pe-client-tools installation instructions for
instructions on installing the PuppetDB CLI on either a workstation managed or
unmanaged by Puppet.
On this page:
Step 1: Install and configure Puppet
If Puppet isn't fully installed and configured install it and request, sign, and retrieve a certificate for the node.
Your node should be running the Puppet agent and have a signed certificate from
your Puppet Server. If you run puppet agent --test, it should
successfully complete a run, ending with Notice: Applied catalog in X.XX seconds.
It is helpful to add the Puppet bin, /opt/puppetlabs/bin, and man,
/opt/puppetlabs//client-tools/share/man, directories to your PATH and
MANPATH directories respectively. For example,
$ export PATH=/opt/puppetlabs/bin:$PATH
$ export MANPATH=/opt/puppetlabs/client-tools/share/man:$MANPATH
The rest of this documentation assumes that these two directories have been added to their proper path configurations.
Step 2: Install and configure the PuppetDB CLI
Install the PuppetDB CLI from Rubygems:
$ gem install --bindir /opt/puppetlabs/bin puppetdb_cli
If you are installing the PuppetDB CLI on a machine that does not have Puppet
installed, such as your own workstation, you can install the executables to Ruby's
standard bindir by omitting the --bindir option.
$ gem install puppetdb_cli
If the node you installed the CLI on is not the same node as your PuppetDB server, you will need to add the CLI node's certname to the PuppetDB certificate-allowlist and specify the paths to the CLI node's cacert, cert, and private key when using the CLI either with flags or a configuration file.
To configure the PuppetDB CLI to talk to your PuppetDB with flags, add a
configuration file at $HOME/.puppetlabs/client-tools/puppetdb.conf (or
%USERPROFILE%\.puppetlabs\client-tools\puppetdb.conf for Windows). For more
details see the installed man page:
$ man puppetdb_conf
The PuppetDB CLI configuration files (the user-specified or global files) can take the following settings:
-
server_urlsEither a JSON String (for a single url) or Array (for multiple urls) of your PuppetDB servers to query or manage via the CLI commands. (You can set this with thepuppetdb_urlsparameter in thepuppet_enterprise::profile::controllerclass for PE.)Default value: https://127.0.0.1:8080
-
cacertThe path for the CA cert.*nix sytems - /etc/puppetlabs/puppet/ssl/certs/ca.pem
Windows - C:\ProgramData\PuppetLabs\puppet\etc\ssl\certs\ca.pem
-
certAn SSL certificate signed by your site's Puppet CA. Note that the PE version of the CLI supports token auth viapuppet-accessand this option should not be necessary. -
keyThe private key for that certificate. Note that the PE version of the CLI supports token auth viapuppet-accessand this option should not be necessary.
Example configuration file (pe-client-tools)
The PE version of the PuppetDB CLI supports token auth so the only
necessary configuration items are server_urls and cacert.
cert and key in the PuppetDB
CLI configuration will prevent you from using token authentication (for example,
certificate authentication takes precendence over token authentication).{
"puppetdb": {
"server_urls": "https://<PUPPETDB_HOST>:8081",
"cacert": "/etc/puppetlabs/puppet/ssl/certs/ca.pem"
}
}
On Windows, escape slashes in the CA certificate path.
{
"puppetdb": {
"server_urls": "https://<PUPPETDB_HOST>:8081",
"cacert": "C:\\ProgramData\\PuppetLabs\\puppet\\etc\\ssl\\certs\\ca.pem"
}
}
Example configuration file (puppet-client-tools)
The open source version of the PuppetDB CLI requires certificate authentication
for SSL connections to PuppetDB. To configure certificate authentication set
cacert, cert and key.
{
"puppetdb": {
"server_urls": "https://<PUPPETDB_HOST>:8081",
"cacert": "/etc/puppetlabs/puppet/ssl/certs/ca.pem",
"cert": "/etc/puppetlabs/puppet/ssl/certs/<WORKSTATION_HOST>.pem",
"key": "/etc/puppetlabs/puppet/ssl/private_keys/<WORKSTATION_HOST>.pem"
}
}
On Windows, escape slashes in paths.
{
"puppetdb": {
"server_urls": "https://<PUPPETDB_HOST>:8081",
"cacert": "C:\\ProgramData\\PuppetLabs\\puppet\\ssl\\certs\\ca.pem",
"cert": "C:\\ProgramData\\PuppetLabs\\puppet\\ssl\\certs\\<WORKSTATION_HOST>.pem",
"key": "C:\\ProgramData\\PuppetLabs\\puppet\\ssl\\private_keys\\<WORKSTATION_HOST>.pem"
}
}
Step 3: Enjoy!
Here are some examples of using the CLI.
Using puppet query
Query PuppetDB using PQL:
$ puppet query "nodes [ certname ]{ limit 1 }"
Or query PuppetDB using the AST syntax:
$ puppet query "['from', 'nodes', ['extract', 'certname'], ['limit', 1]]"
For more information on the query command:
$ man puppet-query
Using puppet db
Handle your PuppetDB exports:
$ puppet db export pdb-archive.tgz --anonymization full
Or handle your PuppetDB imports:
$ puppet db import pdb-archive.tgz
For more information on the db command:
$ man puppet-db
For more information about PuppetDB exports, imports, and anonymization see.






