Forge Home


A simple Puppet module for puppetserver


12,521 latest version

5.0 quality score

We run a couple of automated
scans to help you access a
module's quality. Each module is
given a score based on how well
the author has formatted their
code and documentation and
modules are also checked for
malware using VirusTotal.

Please note, the information below
is for guidance only and neither of
these methods should be considered
an endorsement by Puppet.

Version information

  • 1.4.0 (latest)
  • 1.3.2
  • 1.3.1
  • 1.3.0
  • 1.2.0
  • 1.1.0
  • 1.0.12
  • 1.0.11
  • 1.0.10
  • 1.0.9
  • 1.0.8
  • 1.0.7
  • 1.0.6
  • 1.0.5
  • 1.0.4 (deleted)
  • 1.0.3
  • 1.0.2
  • 1.0.1 (deleted)
  • 1.0.0
released Jan 24th 2018
This version is compatible with:
  • Puppet Enterprise 2018.1.x, 2017.3.x, 2017.2.x, 2017.1.x, 2016.5.x, 2016.4.x
  • Puppet >=4.5.0 < 6.0.0
  • , , , , ,

Start using this module

  • r10k or Code Manager
  • Bolt
  • Manual installation
  • Direct download

Add this module to your Puppetfile:

mod 'gutocarvalho-puppetserver', '1.4.0'
Learn more about managing modules with a Puppetfile

Add this module to your Bolt project:

bolt module add gutocarvalho-puppetserver
Learn more about using this module with an existing project

Manually install this module globally with Puppet module tool:

puppet module install gutocarvalho-puppetserver --version 1.4.0

Direct download is not typically how you would use a Puppet module to manage your infrastructure, but you may want to download the module in order to inspect the code.



gutocarvalho/puppetserver — version 1.4.0 Jan 24th 2018

Build Status License Version Downloads


Table of contents

  1. Overview
  2. Supported Platforms
  3. Requirements
  4. Installation
  5. Usage
  6. References
  7. Development


This module will install the latest puppetserver 5 series in your system.

If you are looking into puppet 4 and puppetserver 2 please use an older version of this module.

This module can also configure puppetdb integration.

This is a very simple module, usually used for development and test purposes.

Yes, you can use it in production, but it is a simple module, you may miss some parameters for production use.

The main objective is to install puppetserver with minimal intervention in the default files.

Augeas resource type is used to change parameters inside the puppet.conf.

Supported Platforms

This module was tested under these platforms

  • CentOS 6 and 7
  • Debian 8
  • Ubuntu 16.04

Tested only in X86_64 arch.

Debian 8 notes

You need to enable debian jessie backports and install jdk8 before use this module.

echo "deb jessie-backports main" >> /etc/apt/sources.list
apt-get update
apt-get -y -t jessie-backports install "openjdk-8-jdk-headless"

In the future I will try to support this requirements inside the module, for now, you should do this before.

You can try my debian8 box with jdk and backport enabled.



You need internet to install packages.

You should configure your hostname properly.

You should configure your /etc/hosts properly.

ip fqdn alias puppet


  • Puppet >= 5.0.0
  • Hiera >= 3.4 (v5 format)


via git

# cd /etc/puppetlabs/code/environment/production/modules
# git clone puppetserver

via puppet

# puppet module install gutocarvalho/puppetserver

via puppetfile

mod 'gutocarvalho-puppetserver'


Quick run

puppet apply -e "include puppetserver"

Using with parameters

Example in EL 7

class { 'puppetserver':
  certname           => $trusted['certname'],
  version            => '5.1.4-1.el7',
  autosign           => true,
  java_args          => '-Xms2g -Xmx2g -XX:MaxPermSize=256m',
  agent_version      => '5.3.3-1.el7',
  puppetdb           => true,
  puppetdb_version   => '5.1.3-1.el7',
  puppetdb_server    => $trusted['certname'],
  puppetdb_port      => 8081,
  system_config_path => '/etc/sysconfig'

Example in EL 6

class { 'puppetserver':
  certname           => $trusted['certname'],
  version            => '5.1.4-1.el6',
  autosign           => true,
  java_args          => '-Xms2g -Xmx2g -XX:MaxPermSize=256m',
  agent_version      => '5.3.3-1.el6',
  puppetdb           => true,
  puppetdb_version   => '5.1.3-1.el6',
  puppetdb_server    => $trusted['certname'],
  puppetdb_port      => 8081,
  system_config_path => '/etc/sysconfig'

Example in Ubuntu 16.04

class { 'puppetserver':
  certname           => $trusted['certname'],
  version            => '5.1.4-1puppetlabs1',
  autosign           => true,
  java_args          => '-Xms2g -Xmx2g -XX:MaxPermSize=256m',
  agent_version      => '5.3.3-1xenial',
  puppetdb           => true,
  puppetdb_version   => '5.1.3-1puppetlabs1',
  puppetdb_server    => $trusted['certname'],
  puppetdb_port      => 8081,
  system_config_path => '/etc/default'

Example in Debian 8

class { 'puppetserver':
  certname           => $trusted['certname'],
  version            => '5.1.4-1puppetlabs1',
  autosign           => true,
  java_args          => '-Xms2g -Xmx2g -XX:MaxPermSize=256m',
  agent_version      => '5.3.3-1jessie',
  puppetdb           => true,
  puppetdb_version   => '5.1.3-1puppetlabs1',
  puppetdb_server    => $trusted['certname'],
  puppetdb_port      => 8081,
  system_config_path => '/etc/default'



puppetserver::install (private)
puppetserver::config (private)
puppetserver::service (private)

Parameters type


Type: String

Certificate name for the agent and server.


Type: String

The puppet server package version. ( 5.1.4-1puppetlabs1 | installed | latest )


Type: Boolean

If true puppet server will sign every certificate request.


Type: String

Configuration for the puppetserver JVM.


Type: String

The puppet agent package version ( 5.3.3-1.el7 | installed | latest )


Type: Boolean

If true it will config puppetdb integration.


Type: String

The puppetdb package version. ( 5.1.3-1puppetlabs1 | installed | latest )


Type: String

The puppetdb server address (FQDN).


Type: Integer

The puppetdb port number (8081).


Type: String

Path for the default OS configuration for puppetserver package.

Hiera Keys

puppetserver::puppetdb: false
puppetserver::puppetdb_server: "%{::ipaddress}"
puppetserver::puppetdb_port: 8081
puppetserver::puppetdb_version: '5.1.3-1.el7'

puppetserver::certname: "%{trusted.certname}"
puppetserver::version: '5.1.4-1.el7'
puppetserver::autosign: false
puppetserver::java_args: '-Xms2g -Xmx2g -XX:MaxPermSize=256m'
puppetserver::system_config_path: '/etc/sysconfig'

puppetserver::agent_version: '5.3.3-1.el7'

Hiera module config

This is the Hiera v5 configuration inside the module.

This module does not have params class, everything is under hiera v5.

version: 5
  datadir: data
  data_hash: yaml_data
  - name: "OSes"
     - "oses/distro/%{}/%{facts.os.release.major}.yaml"
     - "oses/family/%{}.yaml"

  - name: "common"
    path: "common.yaml"

This is an example of files under modules/puppetserver/data



My dev environment

This module was developed using

  • Puppet 5.3
    • Hiera 3.4 (v5 format)
    • Facter 2.5
  • CentOS 7.4
  • Vagrant 2.0.1
    • box: gutocarvalho/centos7x64puppet5


This module uses puppet-lint, puppet-syntax, metadata-json-lint, rspec-puppet, beaker and travis-ci. We hope you use them before submitting your PR.

Installing gems

gem install bundler --no-rdoc --no-ri
bundle install --without development

Running syntax tests

bundle exec rake syntax
bundle exec rake lint
bundle exec rake metadata_lint

Running unit tests

bundle exec rake spec

Running acceptance tests

Acceptance tests (Beaker) can be executed using ./ There is a matrix 1/5 to test this class under Centos 6/7, Debian 8 and Ubuntu 14.04/16.04.

bash ./

If you want a detailed output, set this before run

export BEAKER_debug=true

If you want to test a specific OS from our matrix

BEAKER_set=centos-6-x64 bundle exec rake beaker

Our matrix values


This matrix needs vagrant (>=1.9) and virtualbox (>=5.1) to work properly, make sure that you have both of them installed.


Guto Carvalho (gutocarvalho at gmail dot com)