DebianDebian Based

How To Install Puppet on Debian 12

Install Puppet on Debian 12

In this tutorial, we will show you how to install Puppet on Debian 12. In the world of configuration management, Puppet has emerged as a powerful tool for automating and streamlining the deployment and management of infrastructure. Puppet allows system administrators to define the desired state of their systems using a declarative language, ensuring consistency and reproducibility across multiple nodes. With the release of Debian 12 “Bookworm”, it’s an opportune time to explore how to install and set up Puppet on this stable and reliable Linux distribution.

This article assumes you have at least basic knowledge of Linux, know how to use the shell, and most importantly, you host your site on your own VPS. The installation is quite simple and assumes you are running in the root account, if not you may need to add ‘sudo‘ to the commands to get root privileges. I will show you the step-by-step installation of the Puppet on Debian 12 (Bookworm).


Before proceeding with the installation of Puppet on Debian 12, ensure you meet the following requirements:

  • A server running one of the following operating systems: Debian 12 (Bookworm).
  • It’s recommended that you use a fresh OS install to prevent any potential issues.
  • SSH access to the server (or just open Terminal if you’re on a desktop).
  • An active internet connection. You’ll need an internet connection to download the necessary packages and dependencies.
  • A user account with sudo privileges to execute administrative commands.

Install Puppet on Debian 12 Bookworm

Step 1. To begin the installation process, update your Debian 12 server’s package index by running the following command:

sudo apt update
sudo apt upgrade

Step 2. Installing Puppet on Debian 12.

To install Puppet on Debian 12, we need to enable the Puppet platform repository. This repository contains the necessary packages and dependencies for a smooth installation. Start by downloading the release package specific to Debian 12 Bookworm. You can find the appropriate package, such as puppet7-release-bookworm.deb, on the official Puppet website or through a trusted package mirror. Once downloaded, install the release package using the dpkg command:

sudo dpkg -i puppet7-release-bookworm.deb

After installing the release package, update the apt package index to ensure that the system is aware of the newly added repository:

sudo apt update

The Puppet Server acts as the central authority in the Puppet architecture, compiling manifests and serving catalogs to the agent nodes. To install the Puppet Server on Debian 12, use the following apt command:

sudo apt install puppetserver

Once the installation is complete, we need to configure the Puppet Server. Open the /etc/puppetlabs/puppet/puppet.conf file and set the following directives:

server =
certname =
environment = production
dns_alt_names = puppet,

Replace “” with the hostname of your Puppet Server. The certname directive specifies the name of the server’s SSL certificate, while dns_alt_names allows the server to respond to requests using alternative hostnames.

Puppet Server relies on Java to run, so it’s crucial to configure the Java JVM settings according to your server’s resources. Adjust the memory allocation in the /etc/default/puppetserver file based on your server’s RAM. For example, if your server has 4 GB of RAM, you can set:

JAVA_ARGS="-Xms2g -Xmx2g"

This allocates a minimum and maximum of 2 GB of memory to the Puppet Server process.

Finally, start and enable the puppetserver service to ensure it runs automatically on system boot:

sudo systemctl start puppetserver
sudo systemctl enable puppetserver

To verify that the Puppet Server is running correctly, check the service status:

sudo systemctl status puppetserver

If the output indicates that the service is active and running, your Puppet Server is ready to manage agent nodes.

Step 3. Installing Puppet Agent.

With the Puppet Server up and running, it’s time to install the Puppet Agent on the nodes you want to manage. The Puppet Agent communicates with the Puppet Server, retrieves catalogs, and applies the desired configuration. On each agent node, install the puppet-agent package using apt:

sudo apt install puppet-agent

After installation, configure the Puppet Agent by editing the /etc/puppetlabs/puppet/puppet.conf file. Set the following directives:

server =
environment = production
runinterval = 1800

The server directive specifies the hostname of the Puppet Server, while environment sets the Puppet environment the agent belongs to. The runinterval determines how often the agent checks in with the server for updates (in seconds).

To ensure that the Puppet binaries are accessible system-wide, add the following line to your shell configuration file (e.g., ~/.bashrc or ~/.zshrc):

export PATH=/opt/puppetlabs/bin:$PATH

Source the updated shell configuration file or log out and log back in for the changes to take effect.

Start and enable the puppet service on each agent node:

sudo systemctl start puppet
sudo systemctl enable puppet

To test the communication between the agent and the server, manually trigger a Puppet run:

sudo puppet agent --test

If the agent successfully retrieves and applies the catalog from the server, you’ll see an output indicating the changes made (if any) and a success message.

Step 4. Sign Agent Certificates on Puppet Server

Puppet uses a PKI (Public Key Infrastructure) system to authenticate communication between the server and agents. When an agent connects to the server for the first time, it generates a certificate signing request (CSR). The Puppet Server must sign this CSR to establish trust and allow the agent to receive catalogs.

On the Puppet Server, list the pending certificate signing requests:

sudo puppetserver ca list

You’ll see the hostnames of the agent nodes that have requested certificates. To sign a specific agent’s certificate, use the following command:

sudo puppetserver ca sign --certname

Replace “” with the actual hostname of the agent node. After signing the certificate, trigger another Puppet run on the agent node:

sudo puppet agent --test

Step 5. Deploy a Sample Manifest.

To demonstrate how Puppet manages configurations, let’s create a simple manifest and apply it to an agent node. Manifests are files written in the Puppet language that define the desired state of resources on a system. On the Puppet Server, navigate to the production environment’s manifests directory:

cd /etc/puppetlabs/code/environments/production/manifests

Create a new manifest file, for example, sample.pp, and open it in a text editor:

sudo nano sample.pp

In the manifest file, define a simple resource to manage a file:

file { '/tmp/hello.txt':
ensure => present,
content => "Hello, Puppet!\n",

Save the file and exit the text editor. On the agent node, trigger a Puppet run:

sudo puppet agent --test

Puppet will retrieve the catalog containing the sample manifest and apply the configuration. After the run completes, verify that the /tmp/hello.txt file was created on the agent node:

cat /tmp/hello.txt

You should see the content “Hello, Puppet!” printed on the console. You have successfully deployed a Puppet manifest and verified that the desired state was achieved on the agent node.

Congratulations! You have successfully installed Puppet. Thanks for using this tutorial to install the latest version of the Puppet on Debian 12 Bookworm. For additional help or useful information, we recommend you check the official Puppet website.

VPS Manage Service Offer
If you don’t have time to do all of this stuff, or if this is not your area of expertise, we offer a service to do “VPS Manage Service Offer”, starting from $10 (Paypal payment). Please contact us to get the best deal!


r00t is a seasoned Linux system administrator with a wealth of experience in the field. Known for his contributions to, r00t has authored numerous tutorials and guides, helping users navigate the complexities of Linux systems. His expertise spans across various Linux distributions, including Ubuntu, CentOS, and Debian. r00t's work is characterized by his ability to simplify complex concepts, making Linux more accessible to users of all skill levels. His dedication to the Linux community and his commitment to sharing knowledge makes him a respected figure in the field.
Back to top button