2.4 KiB
Usage of Hiera
This module takes advantage of the puppet-module-data
pattern as introduced
by R.I. Pinnear to allow for a significant amount of flexibility with base
configuration of the module. This is to reduce the amount of clutter starting
to gather in params.pp
, and provide a foundation for future enhancements.
Installation
In order to leverage puppet-module-data
, you must add an additional
configuration item to your hiera.yaml
file to load the new backend. Simply
add the following code block.
:backends:
...
- module_data
Vagrant
In order to use this module with Vagrant, you will need to also configure Vagrant to load up Hiera. This can be done with the following directives in your Vagrantfile.
config.vm.provision "puppet" do |puppet|
...
puppet.hiera_config_path = "hiera.yaml"
puppet.options = "--pluginsync"
end
For a full example, please take a look at https://gist.github.com/jfryman/e9f08affec54307e5198 to get additional information to bootstrap this module.
Upgrading
If you happen to be here because of some silly deprecation notice, it is probably because a manifest is declaring attributes for the Nginx Class. Upgrading should be easy!
- Step 1: Make sure you have Hiera configured. https://docs.puppetlabs.com/hiera/1/puppet.html#puppet-3-and-newer
- Step 2: Move any declared parameters to hiera.
- Step 3: Profit!
For example:
class { 'nginx':
logdir => '/data/nginx/logs',
}
should become in your hiera configs:
nginx::config::logdir: /data/nginx/logs
Please note: This module takes advantage of Puppet 3 data module bindings. Be aware of any gotchas that accompany this. Take a look at https://docs.puppetlabs.com/hiera/1/puppet.html#limitations
I cannot/do not use Hiera! NOW WHAT!
Do not fret! This is a big change to the core module, and it may be difficult to make the conversion right away. First off, we intend to make it blatantly clear when the module will tear out the parameters in Class[nginx] as detailed in the deprecation notice. (The current target is v1.0)
In the event that you are unable to leverage Hiera for your attribute configuration, you can use the Spaceship Operator to set the parameters for the nginx::config class. For example:
Class<| title == 'nginx::class' |> {
proxy_cache_levels => '2',
}
The recommended path is to use Hiera, but this pattern should give you an intermediate step during the upgrade process.