Table of contents
1.
Introduction
2.
Installing PuppetDB via a Puppet module
3.
Installing from packages
4.
Installing from source
5.
Upgrading PuppetDB
5.1.
Upgrading with the PuppetDB module
6.
Manually upgrading PuppetDB
6.1.
Truncating reports table
7.
Connecting Puppet Servers to PuppetDB
8.
Connecting standalone Puppet nodes to PuppetDB
9.
Frequently Asked Questions
9.1.
What does Puppet's standalone architecture entail?
9.2.
What is Puppet labs?
9.3.
What are some use cases for puppets?
10.
Conclusion
Last Updated: Mar 27, 2024

Methods to install PuppetDB

Author Shivani Singh
0 upvote
Career growth poll
Do you think IIT Guwahati certified course can help you in your career?
OG Image

Introduction

PuppetDB

PuppetDB houses all of the data Puppet generates, including facts, catalogs, and reports.

Puppet works more quickly when data is stored in PuppetDB, and an API is provided so that other applications can access the data Puppet has gathered. Once PuppetDB is loaded with your data, it can be used as a wonderful tool for a variety of tasks, including infrastructure discovery and vulnerability assessment. In this blog, we will different ways to install puppetDB. 

Installing PuppetDB via a Puppet module

The simplest way to install PuppetDB is by this approach.

The Puppet tool is particularly important in the DevOps environment since it can be utilized in a variety of situations. Every host receives a unique configuration thanks to the puppet.

Step 1: Enable the package repository for the Puppet Platform. Make the PuppetDB and PuppetDB-terminus packages accessible through your alternative installation method if you don't use the Puppet Platform repository.

Step 2: Classify the nodes. There are three basic ways to deploy PuppetDB:

  1. Assign the puppetdb and puppetdb::master::config classes to the server if you're installing PuppetDB on the same machine as your puppet server.
  2. Assign the puppetdb class to your Puppet Server and the puppetdb::master::config class to your local PostgreSQL instance if you want to run PuppetDB on its own server.
  3. Assign the puppetdb::server class, the puppetdb::database::postgresql class, and the puppetdb::master::config class to various servers, while keeping your puppet server as the master configuration server for both PuppetDB and PostgreSQL.

Installing from packages

Here, we'll go over manually setting up PuppetDB using the official packages. Instead of installing the packages directly, users are advised to use the PuppetDB module to install PuppetDB.

Step 1: Installing and configure Puppet. Install Puppet and request/sign/retrieve a certificate for the node if it isn't already installed and configured completely on your PuppetDB server. A certificate signed by your Puppet Server should be installed on your PuppetDB server, which should also be running the Puppet agent.

Step 3: Turn on the Puppet Platform package repository in step two.

Step 3: Install PuppetDB.

$ sudo puppet resource package puppetdb ensure=latest

Step 4: Configure the database. Configure PuppetDB to use a PostgreSQL server once it has been set up.

Step 5: Start the PuppetDB service.

$ sudo puppet resource service puppetdb ensure=running enable=true

Step 7: Connect Puppet to PuppetDB. Your Puppet Server(s) should now be set up to connect to PuppetDB.

Installing from source

Here, we'll go through how to run PuppetDB directly from the source code without installing it, as well as how to install PuppetDB from the source.

Step 1: Prerequisites for installation: 

  1. Puppet Server 2. x or newer (optional)
  2. A configuration of a functioning Puppet agent or server (for SSL setup to succeed)
  3. Version 3 or later of Facter.
  4. JDK 8 and later
  5. Leiningen
  6. Git (for checking out the source code) (for checking out the source code)
  7. Rake (version 0.9.6 or newer) (version 0.9.6 or newer)

Step 2: Install from source (option A).

Run directly from the source (option B). While running a development version for testing while installing from a source is useful, it's preferable to be able to run directly from the source during development, skipping the installation phase.

Step 3: Configure a database.

Step 4: Start the PuppetDB service.

$ sudo service puppetdb start

Step 6: Connect Puppet to PuppetDB.

Upgrading PuppetDB

Upgrading PuppetDB

For checking the updates, the current version is displayed in the upper right corner of PuppetDB's performance dashboard. Additionally, it automatically checks for updates, and if your deployment is out-of-date, it will display a link to the most recent version under the version indication.

Migrating existing data will be handled automatically by PuppetDB. However, you must use PuppetDB 3. x to export your current data if you intend to transfer to a different database before modifying the settings of your current database. 

Upgrading with the PuppetDB module

Step 1: Verify that the puppetlabs-puppetdb module is installed with the most recent version on the puppet server.

Step 2: Import the updated versions of the PuppetDB and PuppetDB-termini packages if you already imported the official packages into your local package repository.

Step 3: Unless it was set to the latest, modify the value of the puppetdb version parameter for the classes puppetdb, puppetdb::server, and puppetdb::master::config.

Step 4: Before the Puppet Server gets a chance to perform a Puppet run, start a Puppet run on the PuppetDB server if you are performing a significant version jump.

Manually upgrading PuppetDB

Stop the PuppetDB service, upgrade the PuppetDB package, and then resume the PuppetDB service on your PuppetDB server.

On platforms without packages

If you used the rake install command to install PuppetDB, you should get a new copy of the source code, stop the service, and then rerun the rake install.

Truncating reports table

By removing all the reports and resource events from your database, you can avoid the lengthy database migrations that some PuppetDB versions contain. Currently, PuppetDB 6.8.0 and 6.10.0 both support this.

Since PuppetDB migrations are cumulative, deleting your reports will stop two lengthy database migrations that will be included in your upgrade from PuppetDB 6.7.0 to 6.11.0.

Monolithic installs

You can erase your reports and resource events for normal installs where PuppetDB and Postgres run on the same machine and you use Puppet's default user and database names by running /opt/puppetlabs/bin/puppetdb delete-reports as root.

Non-default user/database names, PostgreSQL port, or psql location

You can use the general plan below if you are not using a normal install. Run puppetdb delete-reports —help to determine whether any of the user or database names need to be changed for your particular installation.

Postgres on another server

On the server that hosts PuppetDB, the delete-reports subcommand can be found at /opt/puppetlabs/server/apps/puppetdb/cli/apps/delete-reports. This command must be manually transferred to the server hosting PuppetDB's PostgreSQL and run there in order to function.

Connecting Puppet Servers to PuppetDB

Connecting Puppet Servers to PuppetDB

Configure your Puppet Server to use PuppetDB once it has been installed and is operational. The Puppet Server performs the following when connected to PuppetDB:

  • Send PuppetDB the catalog, facts, and reports for each node.
  • When creating node catalogs that compile exported resource information, use PuppetDB.

Step 1: Install plug-ins first

Currently, using PuppetDB requires additional Ruby plug-ins on Puppet Servers.

On packages-supporting platforms

Install the puppetdb-termini package after enabling the Puppet Platform package repository:

On systems without packages

You must manually install the plugins if your Puppet Server isn't running Puppet from a supported package:

  1. Download the PuppetDB source code, unzip it, and use your terminal to navigate to the resultant directory.
  2. Run sudo cp -R puppet/lib/puppet/ /opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet

Step 2: Edit configuration files.

Find the Puppet configuration directory

Run sudo puppet config print confdir to locate the configuration directory for your puppet server. Either /etc/puppet/ or /etc/puppetlabs/puppet/ will typically have it.

  • Edit puppetdb.conf
  • Edit puppet. conf.
  • Edit routes. yaml.

Step 3: Set security policy. 

TCP port 8081 is where PuppetDB listens (HTTPS). Make sure that the PuppetDB and Puppet Server services are connected via this port. There may not be a need for further configuration if the services are hosted on the same server. Make sure the server and network firewalls are configured to permit traffic flow if the services are hosted on different hosts.

Step 4: Restart Puppet Server. Restart the Puppet Server service using the system's service tools.

Connecting standalone Puppet nodes to PuppetDB

PuppetDB can be utilized with standalone Puppet deployments in which a puppet application is installed on every node.

Step 1: Configure SSL.

To communicate with PuppetDB over SSL, both the PuppetDB-termini and PuppetDB require client authentication (CA).

Option A: Distribute certificates to all Puppet nodes (recommended).

Puppet Apply is able to communicate with PuppetDB using certificates generated by a Puppet Server's certificate authority. By setting up a Puppet Server server with dummy manifests, running puppet agent —test once on each node, signing each certificate request on the Puppet Server, and then running puppet agent —test once more on each node, you may issue certificates to every node. Then, execute the SSL setup script once more. Repeat these steps on your PuppetDB node (which usually runs automatically during installation). Your Puppet nodes' connections will now be trusted by PuppetDB.

Option B: Set up an SSL proxy for PuppetDB.

  1. Edit the [jetty] section of the PuppetDB config files to remove all SSL-related settings.
  2. Install a general-purpose web server (like Apache or NGINX) on the PuppetDB server.
  3. Configure the webserver to listen on port 8081 with SSL enabled and proxy all traffic to localhost:8080

Step 2: Install terminus plugins on every Puppet node.

At the moment, using PuppetDB requires additional Ruby plugins from Puppet. These cannot be loaded from a module, in contrast to custom facts or functions, and must be installed in the main source directory of Puppet.

  • Check to see if the relevant Puppet platform repository is enabled first. To accomplish this, you can use a package resource, apt::source (from the puppetlabs-apt module), or yumrepo types.
  • Next, use Puppet to confirm the installation of the puppetdb-termini package:
 package {'puppetdb-termini':
      ensure => installed,
    }

Step 3: Manage configuration files on every Puppet node. The config directory for Puppet contains all the configuration files you will need to manage (confdir).

Frequently Asked Questions

What does Puppet's standalone architecture entail?

The Puppet applies application is run on managed nodes in the stand-alone architecture of Puppet. For simpler configuration operations, the Puppet applies application is typically a scheduled task.

What is Puppet labs?

An organization called Puppet Labs is dedicated to solving any difficulties with the Puppet automation process that may come up.

What are some use cases for puppets?

The Puppet tool is particularly important in the DevOps environment since it can be utilized in a variety of situations. Every host receives a unique configuration thanks to the puppet.

Conclusion

To sum it up, here we discussed installing PuppetDB via a Puppet module, installing from packages, and installing from source. Then we saw upgrading PuppetDB, manually upgrading PuppetDB. In the end, we saw connecting Puppet Servers to PuppetDB and connecting standalone Puppet nodes to PuppetDB. 

For more content, Refer to our guided paths on Coding Ninjas Studio to upskill yourself.

Do upvote our blogs if you find them helpful and engaging!

Happy Learning!

Thankyou
Live masterclass