Module data with the params.pp pattern
The params.pp
pattern takes advantage of the Puppet class
inheritance behavior.
One class in your module does nothing but set variables for the other
classes. This class is called <MODULE>::params
. This class uses Puppet code
to construct values; it uses conditional logic based on the target operating system. The rest
of the classes in the module inherit from the params class. In their parameter lists, you can
use the params class's variables as default values.
When using params.pp
pattern, the values set in the params.pp
defined class cannot be used in lookup merges and
Automatic Parameter Lookup (APL) - when using this pattern these are only used for defaults
when there are no values found in Hiera.
An example params class:
# ntp/manifests/params.pp class ntp::params { $autoupdate = false, $default_service_name = 'ntpd', case $facts['os']['family'] { 'Debian': { $service_name = 'ntp' } 'RedHat': { $service_name = $default_service_name } } }
A class that inherits from the params class and uses it to set default parameter values:
class ntp ( $autoupdate = $ntp::params::autoupdate, $service_name = $ntp::params::service_name, ) inherits ntp::params { ... }