- Download and verify the installation package
- Install using text mode
- Install using web-based installation
Configuration parameters and the
You can install PE using text mode, where you provide a pe.conf file with installation parameters, or using a guided, web-based installation. Either of these methods is appropriate for installing infrastructure components on your master or master of masters.
Download and verify the installation package
PE is distributed in downloadable packages specific to supported operating system versions and architectures. Installation packages include the full installation tarball and a GPG signature (.asc) file used to verify authenticity.
You must have GnuPG installed.
- Download the tarball appropriate to your operating system and architecture.
- Import the Puppet public key.
wget -O - https://downloads.puppetlabs.com/puppet-gpg-signing-key.pub | gpg --import
- Print the fingerprint of the key.
gpg --fingerprint 0x7F438280EF8D349F
The primary key fingerprint displays: 6F6B 1550 9CF8 E59E 6E46 9F32 7F43 8280 EF8D 349F.
- Verify the release signature of the installation package.
$ gpg --verify puppet-enterprise-<version>-<platform>.tar.gz.ascThe result is similar to:
gpg: Signature made Tue 18 Sep 2016 10:05:25 AM PDT using RSA key ID EF8D349F gpg: Good signature from "Puppet, Inc. Release Key (Puppet, Inc. Release Key)"Note: If you don't have a trusted path to one of the signatures on the release key, you receive a warning that a valid path to the key couldn't be found.
Install using text mode
When you run the installer in text mode, you provide a configuration file (
pe.conf) to the installer. The
pe.conf file contains values for the parameters needed for installation.
- Unpack the installation tarball:
tar -xf <TARBALL_FILENAME>
- From the installer directory, run the installer. The installation steps vary depending on the path you choose.
- To use a
pe.conffile that you've previously populated, run the installer with the
-cflag pointed at the
sudo ./puppet-enterprise-installer -c <FULL PATH TO pe.conf>
- To have the installer open a copy of
pe.conffor you to edit and install with, run the installer without the
Select text-mode when prompted.
Specify required installation parameters.
If you have an external PostgreSQL server, refer to the external PostgreSQL parameters in the pe.conf reference and add them to
Save and close the file. Installation begins.
- To use a
- If you didn't specify a console admin password in your
pe.conffile, follow the prompts to specify the password.
- After the installation completes, run Puppet twice:
puppet agent -t.
You must restart the shell before you can use PE client tool subcommands.
Text mode installer options
When you run the installer in text mode, you can use the
-c option to specify the full path to
pe.conf file. You can pair
these additional options with the
||Display debugging information|
||Run in quiet mode. The installation process isn't displayed. If errors occur during the installation, the command quits with an error message.|
||Run automatically using the
||Display verbose debugging information.|
||Display help information.|
||For upgrades only, bypass PostgreSQL migration
validation. This option must appear last, after the end-of-options
Install using web-based installation
Web-based installation uses a web server to guide you through installation.
Review the Web-based installation prerequisites.
- Optional: If necessary, forward ports to the web-based installer.
The web-based installer requires access to port 3000 on the machine you're running the installer from. If you can't connect directly to port 3000 — for example, if you're installing PE on a virtual machine or have firewall rules that prevent direct access — you can port forward, or "tunnel," to the installer using SSH.
ssh -L 3000:localhost:3000 jumphost.exmple.tld
Open PuTTY, select Sessions and in the Host Name field, enter the FQDN of the host you want to run the installer from.
Select Tunnels and in the Source Port field, enter 3000.
In the Destination field, enter localhost:3000.
Select Local, click Add, and then click Open.
- Unpack the installation tarball:
tar -xf <TARBALL_FILENAME>
- From the installer directory, run the installer:
- When prompted, choose guided installation
The installer starts a web server and provides an installer URL.
The default installer URL is
https://<INSTALL_PLATFORM_HOSTNAME>:3000. If you forwarded ports in step 1, the URL is
- In a browser, access the installer URL and accept the security request.
The installer uses a default SSL certificate. You must add a security exception in order to access the installer.Important: Leave your terminal connection open until the installation is complete or else installation fails.
- Follow the prompts to configure your installation.
- On the validation page, verify the configuration and, if there aren't any outstanding issues, click Deploy now.
Installation begins. You can monitor the installation as it runs by toggling Log View and Summary View. If you notice errors, check
/var/log/puppetlabs/installer/install_log.lastrun.<hostname>.logon the machine from which you're running the installer.
When the installation completes, the installer script that was running in the terminal closes.
- Click Start using Puppet Enterprise to log into the console.
Web-based installation prerequisites
Review these prerequisites and tips before beginning a web-based installation.
If you've previously installed Puppet or Puppet Enterprise, make sure that the machine you're installing on is free of any artifacts left over from the previous installation.
Make sure that DNS is properly configured on the machines you're installing on.
All nodes must know their own hostnames, which you can achieve by properly configuring reverse DNS on your local DNS server, or by setting the hostname explicitly. Setting the hostname usually involves the
hostnamecommand and one or more configuration files, but the exact method varies by platform.
All nodes must be able to reach each other by name, which you can achieve with a local DNS server, or by editing the
/etc/hostsfile on each node to point to the proper IP addresses.
You can run the installer from a machine that is part of your deployment or from a machine that is outside your deployment.
The machine you run the installer from must have the same operating system and architecture as your deployment.
The web-based installer does not support sudo configurations with
Defaults rootpw. Make sure your
/etc/sudoersfile does not contain, or comment out, those lines.
For Debian users, if you gave the root account a password during installation of Debian, sudo may not have been installed. In this case, you must either install as root, or install sudo on any nodes on which you want to install.
SSH requirements vary depending on your installation method.
- Choose Install on this server during installation.
- Have a properly configured SSH agent with agent forwarding enabled.
authorized_keysfile for that user account on each infrastructure node, including the machine from which you're running the installer. This requirement applies to root or non-root users.
|Root with a password||The installer requires the username and password for each infrastructure node.||Remote root SSH login must be enabled on each infrastructure node, including the node from which you're running the installer.|
|Non-root with a password||Sudo must be enabled for the non-root user on each infrastructure node.|
|Root with an SSH key||The installer requires the username, private key path, and key passphrase (as needed) for each infrastructure node.||
|Non-root with an SSH key||
Web-based installation options
Use this reference when providing values in the web-based installer.
|Puppet master FQDN|
Fully qualified domain name of the server you're installing on. This FQDN is used as the name of the master certificate. This FQDN must be resolvable from the machine on which you're running the installer.
To ensure you're using the proper FQDN for the master, run
|DNS altnames||Comma-separated list of static, valid, DNS altnames so agents can trust the master. Make sure that this static list contains the DNS name or alias you’re be configuring your agents to contact. The default settings include |
|SSH username||Username to use when connecting to the master. This user must either be root or have sudo access. The default value is |
|SSH password||Password associated with the SSH username. This password is used only if the user requires a password for sudo access.|
|SSH key file path||Absolute path to the SSH key on the machine you're performing the installation from. This value is used if an SSH password is not specified. Defaults to the root SSH key path.|
|SSH key passphrase||Passphrase for the SSH key, if applicable.|
Configuration parameters and the
pe.conf file is a HOCON formatted file that declares parameters and values needed to install, upgrade, and configure PE.
You can create or obtain a
pe.conf file by:
- Using the example
pe.conffile provided in the
conf.ddirectory in the installer tarball.Tip: In most cases, you can use the example
pe.conffile without making any changes.
- Selecting the text-mode installation option when prompted by the installer. This option opens your default text editor with the example
pe.conffile, which you can modify as needed. Installation proceeds using that
pe.confafter you quit the editor.
- Using the web-based installer to create a
pe.conffile. After you run the web-based installer, you can find the file at
/etc/puppetlabs/enterprise/conf.d. You can also download the file by following the link provided on the confirmation page of the web-based installer.
The following are examples of valid paramater and value expressions:
Valid Boolean values are
Note: Don't use Yes (y), No (n), 1, or 0.
|JSON hashes|| |
pe.conf parameters are required for installation.
The FQDN of the node hosting the master, for example
Note: You can leave the default
Database configuration parameters
These are the default parameters and values supplied for the PE databases.
|Name for the activity database.|
|Activity database user that can perform only read functions.|
|Activity database user that can perform only read and write functions.|
|Activity database superuser.|
|Activity service database user used for migrations.|
|Activity service database user used for normal operations.|
|Name for the classifier database.|
|Classifier database user that can perform only read functions.|
|Classifier database user that can perform only read and write functions.|
|Classifier database superuser.|
|Classifier service user used for migrations.|
|Classifier service user used for normal operations.|
|Name for the orchestrator database.|
|Orchestrator database user that can perform only read functions.|
|Orchestrator database user that can perform only read and write functions.|
|Orchestrator database superuser.|
|Orchestrator service user used for migrations.|
|Orchestrator service user used for normal operations.|
|Name for the PuppetDB database.|
|PuppetDB database user.|
|Name for the RBAC database.|
|RBAC database user that can perform only read functions.|
|RBAC database user that can perform only read and write functions.|
|RBAC database superuser.|
|RBAC service user used for migrations.|
|RBAC service user used for normal operations.|
External PostgreSQL parameters
These parameters are required to install an external PostgreSQL instance. Password parameters can be added to standard installations if needed.
| ||Agent certname of the node hosting the database component. Don't use an alt name for this value.|
| || || |
| || |
Important: For unmanaged PostgreSQL installations don't use SSL security, set this parameter to
| ||Password for the PuppetDB database user. Must be a string, such as |
| ||Password for the classifier database user. Must be a string, such as |
| ||Database user the classifier service uses for normal operations.|| |
| ||Database user the classifier service uses for migrations.|| |
| ||Password for the activity database user. Must be a string, such as |
| ||Database user the activity service uses for normal operations.|| |
| ||Database user the activity service uses for migrations.|| |
| ||Password for the RBAC database user. Must be a string, such as |
| ||Database user the RBAC service uses for normal operations.|| |
| ||Database user the RBAC service uses for migrations|| |
| ||Password for the orchestrator database user. Must be a string, such as |
| ||Database user the orchestrator service uses for normal operations.|| |
| ||Database user the orchestrator service uses for migrations|| |
Use these parameters to configure and tune the master.
| ||An array of strings that represent the DNS altnames to be added to the SSL certificate generated for the master.|| |
| ||Array of additional certificates to be allowed access to the |
| || |
| ||String that represents the Git URL to be passed to the |
| ||String that represents the local file system path on the master where the SSH private key can be found and used by r10k, for example |
| || || |
Console and console-services parameters
Use these parameters to customize the behavior of the console and console-services. Parameters that begin with
puppet_enterprise::profile can be modified from the console itself.
|The password to log into the console, for example |
| ||Integer representing, in seconds, the classifier synchronization period, which controls how long it takes the node classifier to retrieve classes from the master.|| |
| ||Integer representing, in minutes, how long a user's session may last. The session length is the same for node classification, RBAC, and the console.|| |
| ||Integer representing the maximum allowable period that a console session may be valid. May be set to "0" to not expire before the maximum token lifetime. Supported units are "s" (seconds), "m" (minutes), "h" (hours), "d" (days), "y" (years). Units are specified as a single letter following an integer, for example "1d" (1 day). If no units are specified, the integer is treated as seconds.|| |
| ||Integer representing the port that the console is available on.|| |
| ||Nginx listen address for the console|| |
| ||Integer representing the number of days to wait before pruning the size of the classifier database. If you set the value to || |
| || || |
| || || |
| ||SSL port that the node classifier is served on.|| |
| ||Length of time, in seconds, before a node is considered unresponsive.|| |
Orchestrator and orchestration services parameters
Use these parameters to configure and tune the orchestrator and orchestration services.
| || || |
| ||An integer that determines the maximum number of concurrent requests orchestrator can make to bolt-server. |
CAUTION: Do not set a concurrency limit that is higher than the bolt-server limit. This can cause timeouts that lead to failed task runs.
The default value is set to the current value stored for bolt-server.
| ||Integer representing how many concurrent compile requests can be outstanding to the master, across all orchestrator jobs.|| |
| ||Integer representing the days after which job reports should be removed.|| |
| ||Integer representing the length of time, in seconds, before timeout when agents attempt to connect to the Puppet Communications Protocol broker in a Puppet run triggered by the orchestrator.|| |
| || || |
| ||Integer representing the number of tasks that can run at the same time.|| |
| || || |
| ||Integer representing the interval, in seconds, between agents' attempts to ping Puppet Communications Protocol brokers.|| |
| ||String representing the path to the Puppet Execution Protocol agent log file. Change as needed.|| |
Use these parameters to configure and tune PuppetDB.
||Integer representing how many command processing threads PuppetDB uses to sort incoming data. Each thread can process a single command at a time.||Half the number of cores in your system, for example |
Integer in brackets representing the SSL port that PuppetDB listens on, for example ||
|“Time-to-live” value before deactivated or expired nodes are deleted, along with all facts, catalogs, and reports for the node. For example, a value of |
Use these parameters to configure and tune Java.
||JVM (Java Virtual Machine) memory, specified as a JSON hash, that is allocated to the Puppet Server service, for example |
||JVM memory, specified as a JSON hash, that is allocated to the PuppetDB service, for example |
JVM memory, specified as a JSON hash, that is allocated to console services, for example |
|JVM memory, set as a JSON hash, that is allocated to orchestration services, for example, |