r_profile
Table of Contents
- Overview
- Usage - Configuration options and additional functionality
- Reference - An under-the-hood peek at what the module is doing and how
- Limitations - OS compatibility, etc.
- Development - Guide for contributing to the module
Overview
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.
Usage
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.
Hiera
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 intorole
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
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.
Limitations
- Not supported by Puppet, Inc.
- Limited OS support
- Not all classes are fully functional! Evaluate your chosen usage against the existing functionality.
Development
PRs accepted :)
Testing
This module supports testing using PDQTest.
- RSpec tests exist for most classes but https://tickets.puppetlabs.com/browse/MODULES-4287 makes this impossible for windows at present.
- The vsphere profile is prestently untestable as the module is enterprise-only
Test can be executed with:
bundle install
bundle exec pdqtest all