Overview and requirements
PuppetDB collects data generated by Puppet. It enables advanced Puppet features like exported resources, and can be the foundation for other applications that use Puppet's data.
Install it now
To start using PuppetDB today:
Review the system requirements below (and optionally, our scaling recommendations).
Choose your installation method:
Easy install using the PuppetDB puppet module on our recommended platforms
Install from packages on our recommended platforms
Advanced install on any other *nix
This documentation covers PuppetDB 7, which adds several new features and contains some breaking changes since PuppetDB 6.
See the release notes for information on all changes.
The most recent facts from every node
The most recent catalog for every node
Optionally, 14 days (configurable) of event reports for every node
Together, these give you a huge inventory of metadata about every node in your infrastructure and a searchable database of every single resource being managed on any node.
Puppet itself can search a subset of this data using
exported resources, which allow nodes to manage resources on other
nodes. This is similar to the capabilities of the legacy ActiveRecord
storeconfigs interface, but much, much faster. The remaining data is available
through PuppetDB's query APIs (see the navigation sidebar for details).
*nix server with JVM 11+
Standard install: RHEL, CentOS, Debian, and Ubuntu
Puppet provides PuppetDB packages and a module which simplify the setup of its SSL certificates and init scripts. The packages are available for the following operating systems:
Red Hat Enterprise Linux 6, 7, and 8
SuSE Enterprise Linux 12
Debian 8 (Jessie), 9 (Stretch), and 10 (Buster)
Ubuntu 16.04 (Xenial) LTS, 18.04 (Bionic) LTS, and 20.04 (focal)
See here for instructions for installing via the PuppetDB module.
Custom install: Any Unix-like OS
If you're willing to do some manual configuration, PuppetDB can run on any Unix-like OS with JVM 11 or newer, including:
Recent MacOS X versions (using built-in support)
Nearly any Linux distribution using OpenJDK 11 or Oracle JDK 11
Nearly any *nix distribution using OpenJDK 11 or Oracle JDK 11
Your site's Puppet Server must be running Puppet Server 7.0.0 or later. You will need to connect your Puppet Servers to PuppetDB after installing it. If you wish to use PuppetDB with standalone nodes that are running puppet apply, every node must be running 7.0.0 or later.
PuppetDB requires PostgreSQL 11 or later. If not provided by your distribution, compatible versions of Postgres can be installed from the PGDG (PostgreSQL Global Development Group) repositories. See apt.postgresql.org or yum.postgresql.org for more information.
You can also install a compatible version of Postgres using the puppetlabs-puppetdb module.
PuppetDB will be a critical component of your Puppet deployment and should be run on a robust and reliable server.
However, it can do a lot with fairly modest hardware. In benchmarks using real-world catalogs from a customer, a single 2012 laptop (16 GB of RAM, consumer-grade SSD, and quad-core processor) running PuppetDB and PostgreSQL was able to keep up with sustained input from 8,000 simulated Puppet nodes checking in every 30 minutes. Powerful server-grade hardware will perform even better.
The actual requirements will vary wildly depending on your site's size and characteristics. At smallish sites, you may even be able to run PuppetDB on your Puppet Server.
For more on fitting PuppetDB to your site, see our scaling recommendations.
PuppetDB is developed openly, and is released under the Apache 2.0 license. You can get the source --- and contribute to it! --- at the PuppetDB GitHub repo. Bug reports and feature requests are welcome at the Puppet Labs issue tracker.