Installing Puppet Server

Puppet Server is a required application that runs on the Java Virtual Machine (JVM). It controls the configuration information for one or more managed agent nodes.

Before you begin

Review the supported operating systems and make sure you have a supported version of Java. Note that, unlike Puppet Agent, Puppet Server is not supported on MacOS. If you encounter any issues with the steps below, submit them to our Bug Tracker.

Supported operating systems

Puppet provides official packages that install Puppet Server and all of its prerequisites for the following platforms:

Operating Systems Version
Red Hat Enterprise Linux 7, 8, 9
Debian 9 (Stretch), 10 (Buster), 11 (Bullseye)
Ubuntu 16.04 (Xenial, amd64 only), 18.04 (Bionic), 20.04 (Focal), 22.04
SLES 12 SP1, 15 (x86_64)

If we don't provide a package for your system, you can run Puppet Server from source on any x86_64 Linux server with JDK 1.8 or 11. For more details, visit Running from Source.

Note: For help with non-supported operating systems, architectures, or JRE versions, join our Community Slack.

Important: If you implement Linux hardening techniques, consider customizing your settings, including but not limited to the following:

  • SELinux: Grant exceptions for Puppet and the PXP agent to allow these services to run effectively.

  • File Access Policy Daemon (fapolicyd): Grant exceptions for PE services to prevent potential restrictions.

  • umask: Ensure your operating system's default umask is set to 022 or less restrictive. A more restrictive setting can lead to unintended failures, as Puppet users might be denied access to necessary files.

Java support

Puppet Server versions are tested against the following versions of Java:

Puppet Server Java
7.y and later 8, 11, 17
8.y and later 11, 17

The preferred version of Java is version 17. Some Java versions may work with other Puppet Server versions, but we do not test or support those cases. Both Java 8 and 11 are considered long-term support versions and are planned to be supported by upstream maintainers until 2022 or later.

Install Puppet Server

Puppet Server is configured to use 2 GB of RAM by default. If you're simply testing an installation on a Virtual Machine, this amount of memory is not necessary. To change the memory allocation, see Running Puppet Server on a VM.

Important: If you're upgrading, stop any existing puppetserver service by running service <service_name> stop or systemctl stop <service_name>.

  1. Enable the Puppet package repositories, if you haven't already done so.

  2. Install the Puppet Server package by running one of the following commands:

    • Red Hat operating systems: yum install puppetserver

    • Debian and Ubuntu operating systems: apt-get install puppetserver

  3. Start the Puppet Server service: sudo systemctl start puppetserver

  4. Open a new shell, or use exec bash to update your PATH.

    Tip: If you're installing Puppet Server on Ubuntu, use bash -l instead of exec bash.

  5. To check if you installed the Puppet Server correctly, run: puppetserver -v

Step Result: If you correctly installed Puppet Server, the command displays the correct version.

Install a Puppet Agent

After you successfully install Puppet Server, next install the following:

  1. Install a Puppet agent

  2. (Optional) Install PuppetDB,⁠ if you want to enable extra features, including enhanced queries and reports about your infrastructure.

Running Puppet Server on a VM

By default, Puppet Server is configured to use 2GB of RAM. However, if you want to experiment with Puppet Server on a VM, you can safely allocate as little as 512MB of memory. To change the Puppet Server memory allocation, you can edit the init config file.

  1. Open the applicable file:

    • For RHEL or CentOS, open: /etc/sysconfig/puppetserver

    • For Debian or Ubuntu, open: /etc/default/puppetserver

  2. Update the following line to display the amount of memory you want to allocate to Puppet Server:

     # Modify this if you'd like to change the memory allocation, enable JMX, etc
     JAVA_ARGS="-Xms2g -Xmx2g"

    For example, to allocate 1GB of memory, use JAVA_ARGS="-Xms1g -Xmx1g"; for 512MB, use JAVA_ARGS="-Xms512m -Xmx512m".

  3. Restart the puppetserver service.

Note: For more information about the recommended settings for the JVM, visit Oracle's docs on JVM Tuning.