Forge Home


Ready to use Puppet Profile classes


8,082 latest version

2.8 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.15.0 (latest)
  • 1.12.1
  • 1.12.0
  • 1.11.2
  • 1.11.1
  • 1.11.0
  • 1.10.0
  • 1.9.0
  • 1.8.1
  • 1.8.0
  • 1.7.2
  • 1.7.1
  • 1.7.0
  • 1.6.0
  • 1.5.1
  • 1.5.0
  • 1.4.0
  • 1.3.0
  • 1.2.0
  • 1.1.5
  • 1.1.3
  • 1.1.2
  • 1.1.1
  • 1.1.0
  • 1.0.1
  • 1.0.0
  • 0.12.2
  • 0.12.1
  • 0.11.0
  • 0.10.3
  • 0.10.2
  • 0.10.1
  • 0.10.0
  • 0.9.10
  • 0.9.9
  • 0.9.8
  • 0.9.7
  • 0.9.6
  • 0.9.5
  • 0.9.4
  • 0.9.3
  • 0.9.2
  • 0.9.1
  • 0.9.0
  • 0.8.2
  • 0.8.1
  • 0.8.0
  • 0.7.0
  • 0.6.2
  • 0.6.1
  • 0.6.0
  • 0.5.2
  • 0.5.1
  • 0.5.0
  • 0.4.4
  • 0.4.3
  • 0.4.2
  • 0.4.1
  • 0.4.0
  • 0.3.0
  • 0.1.0
released Jun 8th 2017
This version is compatible with:
  • , , ,

Start using this module

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

Add this module to your Puppetfile:

mod 'geoffwilliams-r_profile', '1.15.0'
Learn more about managing modules with a Puppetfile

Add this module to your Bolt project:

bolt module add geoffwilliams-r_profile
Learn more about using this module with an existing project

Manually install this module globally with Puppet module tool:

puppet module install geoffwilliams-r_profile --version 1.15.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.



geoffwilliams/r_profile — version 1.15.0 Jun 8th 2017

Build Status


Table of Contents

  1. Overview
  2. Usage - Configuration options and additional functionality
  3. Reference - An under-the-hood peek at what the module is doing and how
  4. Limitations - OS compatibility, etc.
  5. Development - Guide for contributing to the module


The r_profile module contains the profile equivalent of ready meals for Puppet. The idea is that by offering a small selection of ready-to-use profiles, they can be reused amongst the puppet community without the need to repeatedly develop boilerplate code for common tasks.

The module itself contains many discrete profiles which become immediately available for use by installing the module. Once installed, it is up to the user to select the appropriate classes to integrate into roles. Think along the lines of picking out individual chocolates from a box rather then eating the whole thing and you've got the right idea.


Most classes will need to be loaded using the class resource syntax in order to pass the appropriate class defaults, eg:

class { "foo:bar":
  param1 => "value1",
  param2 => "value2",

Parameters, where available, are documented inside the individual classes. See Reference section.


Since these are profile classes, we are at the appropriate level to perform Hiera lookups directly. Hiera lookups in r_profile classes are coded as class parameters and use explicit lookups using the hiera() function, like this:

# R_profile::Timezone
# Select the active system timezone (requires reboot).  Currently supports Linux,
# Solaris and AIX
# @param zone Timezone to set this node to, eg 'Asia/Hong_Kong'
class r_profile::timezone(
  $zone = hiera("r_profile::timezone::zone", undef),
) {

This affords the following conveniences:

  • It's possible to assemble r_profile classes into role classes using the console to directly include each class if desired
  • Class parameters will automatically resolve to the key specified in the hiera() function
  • If no suitable value can be found in hiera, the second argument to the hiera() function will be used as a default value (if present, otherwise an error will occur)
  • If using the console, values can be overridden directly, per r_profile class, per node group
  • All hiera keys are explicitly specified, while Automatic parameter lookup could have been used instead, it appears somewhat magical to casual users. More importantly, hard coding the complete, correct hiera keys allows them to be pasted directly into your hiera .yaml files (or equivalent) without having to make sure you have concatenated the class and variable names with colons correctly

Setting our local timezone using the r_profile::timezone class is as simple as ensuring that we have the following value set in Hiera and resolvable for the node we are interested in configuring:

r_profile::timezone::zone: "America/Nassau"

Each r_profile class parameter in classes intended for use are documented within the class it is defined in See Reference section for more information.


Reference documentation is generated directly from source code using puppet-strings. You may regenerate the documentation by running:

bundle exec puppet strings

Or you may view the current generated documentation.

The documentation is no substitute for reading and understanding the module source code, and all users should ensure they are familiar and comfortable with the operations this module performs before using it.


  • Not supported by Puppet, Inc.
  • Limited OS support
  • Not all classes are fully functional! Evaluate your chosen usage against the existing functionality.


PRs accepted :)


This module supports testing using PDQTest.

Test can be executed with:

bundle install
bundle exec pdqtest all