Version information
This version is compatible with:
- Puppet Enterprise 2023.2.x, 2023.1.x, 2023.0.x, 2021.7.x, 2021.6.x, 2021.5.x, 2021.4.x, 2021.3.x, 2021.2.x, 2021.1.x, 2021.0.x
- Puppet >= 7.0.0 < 8.0.0
- , , ,
Start using this module
Add this module to your Puppetfile:
mod 'puppet-hiera', '6.0.0'
Learn more about managing modules with a PuppetfileDocumentation
Hiera module for Puppet
Table of Contents
- Overview
- Module Description - What the module does and why it is useful
- Setup - The basics of getting started with hiera
- 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
Module Description
This module configures Hiera for Puppet.
Setup
What hiera affects
- Hiera yaml file
- Hiera datadir
- hiera-eyaml package
- keys/ directory for eyaml
- /etc/hiera.yaml for symlink
Setup requirements
To use the eyaml backend with the modern puppetserver, you will need the puppetlabs-puppetserver_gem module.
Beginning with hiera
Declaring the class with a given hierarchy is a pretty good starting point:
This class will write out a hiera.yaml file in either /etc/puppetlabs/puppet/hiera.yaml or /etc/puppet/hiera.yaml (depending on if the node is running Puppet Enterprise or not).
class { 'hiera':
hierarchy => [
'%{environment}/%{calling_class}',
'%{environment}',
'common',
],
}
For Hiera version 5
class { 'hiera':
hiera_version => '5',
hiera5_defaults => {"datadir" => "data", "data_hash" => "yaml_data"},
hierarchy => [
{"name" => "Virtual yaml", "path" => "virtual/%{virtual}.yaml"},
{"name" => "Nodes yaml", "paths" => ['nodes/%{trusted.certname}.yaml', 'nodes/%{osfamily}.yaml']},
{"name" => "Default yaml file", "path" => "common.yaml"},
],
}
Note: For Hiera version 5 when calling the class, please remember to pass '5' to 'hiera_version' as in the example above. Also please note that 'hierarchy' is an array of hash in version 5.
The resulting output in /etc/puppet/hiera.yaml:
---
:backends:
- yaml
:logger: console
:hierarchy:
- "%{environment}/%{calling_class}"
- "%{environment}"
- common
:yaml:
:datadir: /etc/puppet/hieradata
Resulting output for Hiera 5
# hiera.yaml Managed by Puppet
version: 5
defaults:
datadir: data
data_hash: yaml_data
hierarchy:
- name: "Virtual yaml"
path: "virtual/%{virtual}.yaml"
- name: "Nodes yaml"
paths:
- "nodes/%{trusted.certname}.yaml"
- "nodes/%{osfamily}.yaml"
- name: "Default yaml file"
path: "common.yaml"
Usage
Reference
This module will also allow you to configure different options for logger and merge_behavior. The default behavior is to set logger to console and merge behavior to native.
For details and valid options see Configuring Hiera.
class { 'hiera':
hierarchy => [
'%{environment}/%{calling_class}',
'%{environment}',
'common',
],
logger => 'console',
merge_behavior => 'deeper'
}
For Hiera version 5 please see the example above in beginning with Hiera.
The resulting output in /etc/puppet/hiera.yaml:
---
:backends:
- yaml
:logger: console
:hierarchy:
- "%{environment}/%{calling_class}"
- "%{environment}"
- common
:yaml:
:datadir: /etc/puppet/hieradata
:merge_behavior: deeper
Hiera-Eyaml-GPG
The default PKCS#7 encryption scheme used by hiera-eyaml is perfect if only simple encryption and decryption is needed.
However, if you are in a sizable team it helps to encrypt and decrypt data with multiple keys. This means that each team member can hold their own private key and so can the puppetmaster. Equally, each puppet master can have their own key if desired and when you need to rotate keys for either users or puppet masters, re-encrypting your files and changing the key everywhere does not need to be done in lockstep.
Requirements
Note: This module will create a /gpg sub-directory in the $keysdir
.
- The GPG keyring must be passphraseless on the on the PuppetServer(Master).
- The GPG keyring must live in the /gpg sub-directory in the
$keysdir
. - The GPG keyring must be owned by the Puppet user. ex: pe-puppet
GPG Keyring Creation Tips
RNG-TOOLS
When generating a GPG keyring the system requires a good amount of entropy.
To help generate entropy to speed up the process then rng-tools package on RHEL
based systems or equivilent can be used. Note: Update the /etc/sysconfig/rngd
or equivilent file to set the EXTRAOPTIONS to
EXTRAOPTIONS="-r /dev/urandom -o /dev/random -t 5"
Keyring Generation
Below is a sample GPG answers file that will assist in generating a passphraseless key
cat << EOF >> /tmp/gpg_answers
%echo Generating a Puppet Hiera GPG Key
Key-Type: RSA
Key-Length: 4096
Subkey-Type: ELG-E
Subkey-Length: 4096
Name-Real: Hiera Data
Name-Comment: Hiera Data Encryption
Name-Email: puppet@$(hostname -d)
Expire-Date: 0
%no-ask-passphrase
# Do a commit here, so that we can later print "done" :-)
# %commit
# %echo done
EOF
You can then use the GPG answer file to generate your keyring within the
/gpg sub-directory in the $keysdir
gpg --batch --homedir /etc/puppetlabs/puppet/keys/gpg --gen-key /tmp/gpg_answers
Usage
class { 'hiera':
hierarchy => [
'nodes/%{clientcert}',
'locations/%{location}',
'environments/%{applicationtier}',
'common',
],
eyaml => true,
eyaml_gpg => true,
eyaml_gpg_recipients => 'sihil@example.com,gtmtech@example.com,tpoulton@example.com',
}
The resulting output in /etc/puppet/hiera.yaml:
---
:backends:
- eyaml
- yaml
:logger: console
:hierarchy:
- "nodes/%{clientcert}"
- "locations/%{location}"
- "environments/%{applicationtier}"
- common
:yaml:
:datadir: /etc/puppet/hieradata
:eyaml:
:datadir: /etc/puppet/hieradata
:pkcs7_private_key: /etc/puppet/keys/private_key.pkcs7.pem
:pkcs7_public_key: /etc/puppet/keys/public_key.pkcs7.pem
:encrypt_method: "gpg"
:gpg_gnupghome: "/etc/puppet/keys/gpg"
:gpg_recipients: "sihil@example.com,gtmtech@example.com,tpoulton@example.com"
Classes
Public Classes
- hiera: Main class to configure hiera
Private Classes
- hiera::params: Handles variable conditionals
- hiera::eyaml: Handles eyaml configuration
Limitations
The eyaml_version
parameter does not currently modify the eyaml version of the
command-line gem on pe-puppetserver.
Development
Pull requests on github! If someone wrote spec tests, that would be awesome.
Reference
Table of Contents
Classes
Public Classes
hiera
: This class handles installing the hiera.yaml for Puppet's use. Creates either /etc/puppet/hiera.yaml or /etc/puppetlabs/puppet/hiera.yaml in set hiera version and links /etc/hiera.yaml to it. Creates $datadir (if $datadir_manage == true).hiera::deep_merge
: This class installs and configures deep_mergehiera::eyaml_gpg
: This calls install and configures hiera-eyaml-gpghiera::params
: This class handles OS-specific configuration of the hiera module. It looks for variables in top scope (probably from an ENC such as Dashboard). If the variable doesn't exist in top scope, it falls back to a hard coded default value.
Private Classes
hiera::eyaml
: This class installs and configures hiera-eyaml
Defined types
Private Defined types
hiera::install
: Private define
Data types
Hiera::Hiera5_defaults
: This will validate hiera 5 'defaults' hashHiera::Hiera5_hierarchy
: This will validate hiera 5 hierarchy array hash
Classes
hiera
=== Copyright:
Copyright (C) 2012 Hunter Haugen, unless otherwise noted. Copyright (C) 2013 Mike Arnold, unless otherwise noted. Copyright (C) 2014 Terri Haber, unless otherwise noted. Copyright (C) 2016 Vox Pupuli, unless otherwise noted.
Parameters
The following parameters are available in the hiera
class:
hierarchy
hiera_version
hiera5_defaults
backends
backend_options
hiera_yaml
create_symlink
datadir
datadir_manage
owner
group
mode
eyaml_owner
eyaml_group
provider
eyaml
eyaml_name
eyaml_version
eyaml_source
eyaml_datadir
eyaml_extension
confdir
puppet_conf_manage
logger
cmdpath
create_keys
keysdir
deep_merge_name
deep_merge_version
deep_merge_source
deep_merge_options
merge_behavior
extra_config
master_service
manage_package
manage_eyaml_package
manage_deep_merge_package
manage_eyaml_gpg_package
package_name
package_ensure
eyaml_gpg_name
eyaml_gpg_version
eyaml_gpg_source
eyaml_gpg
eyaml_gpg_gnupghome_recurse
eyaml_gpg_recipients
eyaml_pkcs7_private_key
eyaml_pkcs7_public_key
ruby_gpg_name
ruby_gpg_version
ruby_gpg_source
gem_install_options
gem_source
hierarchy
Data type: Variant[Array, Array[Hash]]
The hiera hierarchy.
Default value: $hiera::params::hierarchy
hiera_version
Data type: Optional[Enum['3','5']]
To set hiera 5 defaults. e.g. datadir, data_hash.
Default value: $hiera::params::hiera_version
hiera5_defaults
Data type: Hiera::Hiera5_defaults
Version format to layout hiera.yaml. Should be a string.
Default value: $hiera::params::hiera5_defaults
backends
Data type: Any
The list of backends. If you supply a additional backend you must also supply the backend data in the backend_options hash.
Default value: ['yaml']
backend_options
Data type: Any
An optional hash of backend data for any backend. Each key in the hash should be the name of the backend as listed in the backends array. You can also supply additional settings for the backend by passing in a hash. By default the yaml and eyaml backend data will be added if you enable them via their respective parameters. Any options you supply for yaml and eyaml backend types will always override other parameters supplied to the hiera class for that backend.
Example hiera data for the backend_options hash:
backend_options:
json:
datadir: '/etc/puppetlabs/puppet/%{environment}/jsondata'
redis:
password: clearp@ssw0rd # if your Redis server requires authentication
port: 6380 # unless present, defaults to 6379
db: 1 # unless present, defaults to 0
host: db.example.com # unless present, defaults to localhost
path: /tmp/redis.sock # overrides port if unixsocket exists
soft_connection_failure: true # bypass exception if Redis server is unavailable; default is false
separator: / # unless present, defaults to :
deserialize: :json # Try to deserialize; both :yaml and :json are supported
NOTE: The backend_options must not contain symbols as keys ie :json: despite the hiera config needing symbols. The template will perform all the conversions to symbols in order for hiera to be happy. Because puppet does not use symbols there are minor annoyances when converting back and forth and merge data together.
Default value: {}
hiera_yaml
Data type: Any
The path to the hiera config file. Note: Due to a bug, hiera.yaml is not placed in the codedir. Your puppet.conf hiera_config setting must match the configured value; see also hiera::puppet_conf_manage
Default value: $hiera::params::hiera_yaml
create_symlink
Data type: Any
Whether to create the symlink /etc/hiera.yaml
Default value: true
datadir
Data type: Any
The path to the directory where hiera will look for databases.
Default value: $hiera::params::datadir
datadir_manage
Data type: Any
Whether to create and manage the datadir as a file resource.
Default value: true
owner
Data type: Any
The owner of managed files and directories.
Default value: $hiera::params::owner
group
Data type: Any
The group owner of managed files and directories.
Default value: $hiera::params::group
mode
Data type: Any
Default value: $hiera::params::mode
eyaml_owner
Data type: Any
Default value: $hiera::params::eyaml_owner
eyaml_group
Data type: Any
Default value: $hiera::params::eyaml_group
provider
Data type: Any
Which provider to use to install hiera-eyaml. Can be: puppetserver_gem (PE 2015.x or FOSS using puppetserver) pe_puppetserver_gem (PE 3.7 or 3.8) pe_gem (PE pre-3.7) puppet_gem (agent-only gem) gem (FOSS using system ruby (ie puppetmaster)) Note: this module cannot detect FOSS puppetserver and you must pass provider => 'puppetserver_gem' for that to work. See also master_service.
Default value: $hiera::params::provider
eyaml
Data type: Any
Whether to install, configure, and enable the eyaml backend. Also see the provider and master_service parameters.
Default value: false
eyaml_name
Data type: Any
The name of the eyaml gem.
Default value: 'hiera-eyaml'
eyaml_version
Data type: Any
The version of hiera-eyaml to install. Accepts 'installed', 'latest', '2.0.7', etc
Default value: undef
eyaml_source
Data type: Any
An alternate gem source for installing hiera-eyaml.
Default value: undef
eyaml_datadir
Data type: Any
The path to the directory where hiera will look for databases with the eyaml backend.
Default value: undef
eyaml_extension
Data type: Any
The file extension for the eyaml backend.
Default value: undef
confdir
Data type: Any
The path to Puppet's confdir.
Default value: $hiera::params::confdir
puppet_conf_manage
Data type: Any
Whether to manage the puppet.conf hiera_config value or not.
Default value: true
logger
Data type: Any
Which hiera logger to use. Note: You need to manage any package/gem dependencies yourself.
Default value: 'console'
cmdpath
Data type: Any
Search paths for command binaries, like the eyaml command. The default should cover most cases.
Default value: $hiera::params::cmdpath
create_keys
Data type: Any
Whether to create pkcs7 keys and manage key files for hiera-eyaml. This is useful if you need to distribute a pkcs7 key pair.
Default value: true
keysdir
Data type: Any
Directory for hiera to manage for eyaml keys. Note: If using PE 2013.x+ and code-manager set the keysdir under the $confdir/code-staging directory to allow the code manager to sync the keys to all PuppetServers Example: /etc/puppetlabs/code-staging/keys
Default value: undef
deep_merge_name
Data type: Any
The name of the deep_merge gem.
Default value: 'deep_merge'
deep_merge_version
Data type: Any
The version of deep_merge to install. Accepts 'installed', 'latest', '2.0.7', etc.
Default value: undef
deep_merge_source
Data type: Any
An alternate gem source for installing deep_merge.
Default value: undef
deep_merge_options
Data type: Any
A hash of options to set in hiera.yaml for the deep merge behavior.
Default value: {}
merge_behavior
Data type: Any
Which hiera merge behavior to use. Valid values are 'native', 'deep', and 'deeper'. Deep and deeper values will install the deep_merge gem into the puppet runtime.
Default value: undef
extra_config
Data type: Any
Arbitrary YAML content to append to the end of the hiera.yaml config file. This is useful for configuring backend-specific parameters.
Default value: ''
master_service
Data type: Any
The service name of the master to restart after package installation or hiera.yaml changes. Note: You must pass master_service => 'puppetserver' for FOSS puppetserver
Default value: $hiera::params::master_service
manage_package
Data type: Any
A boolean for wether the hiera package should be managed.
Default value: $hiera::params::manage_package
manage_eyaml_package
Data type: Boolean
Default value: true
manage_deep_merge_package
Data type: Boolean
Default value: true
manage_eyaml_gpg_package
Data type: Boolean
Default value: true
package_name
Data type: Any
Specifies the name of the hiera package.
Default value: $hiera::params::package_name
package_ensure
Data type: Any
Specifies the ensure value of the hiera package.
Default value: $hiera::params::package_ensure
eyaml_gpg_name
Data type: Any
Default value: 'hiera-eyaml-gpg'
eyaml_gpg_version
Data type: Any
Default value: undef
eyaml_gpg_source
Data type: Any
Default value: undef
eyaml_gpg
Data type: Any
Default value: false
eyaml_gpg_gnupghome_recurse
Data type: Boolean
Whether to recurse and set permissions in the gpgdir. This is imporant to protect the key, but makes puppet agent raise an error on each run. You can set the mode on these files to 0600 by yourself and set this to false.
Default value: true
eyaml_gpg_recipients
Data type: Any
Default value: undef
eyaml_pkcs7_private_key
Data type: Any
Default value: undef
eyaml_pkcs7_public_key
Data type: Any
Default value: undef
ruby_gpg_name
Data type: Any
Default value: 'ruby_gpg'
ruby_gpg_version
Data type: Any
Default value: undef
ruby_gpg_source
Data type: Any
Default value: undef
gem_install_options
Data type: Optional[Array]
An array of install options to pass to the gem package resources. Typically, this parameter is used to specify a proxy server. eg gem_install_options => ['--http-proxy', 'http://proxy.example.com:3128']
Default value: undef
gem_source
Data type: Any
Default value: undef
hiera::deep_merge
=== Copyright:
Copyright (C) 2016 Joseph Yaworski, unless otherwise noted.
hiera::eyaml_gpg
This calls install and configures hiera-eyaml-gpg
hiera::params
=== Copyright:
Copyright (C) 2013 Mike Arnold, unless otherwise noted.
Data types
Hiera::Hiera5_defaults
This will validate hiera 5 'defaults' hash
Alias of
Struct[{
datadir => Optional[String],
data_hash => Optional[Enum['yaml_data', 'json_data', 'hocon_data']],
lookup_key => Optional[String],
data_dig => Optional[String],
hiera3_backend => Optional[String],
options => Optional[Hash],
}]
Hiera::Hiera5_hierarchy
This will validate hiera 5 hierarchy array hash
Alias of
Array[Struct[{
name => String,
path => Optional[String],
paths => Optional[Array[String]],
glob => Optional[String],
globs => Optional[Array[String]],
uri => Optional[String],
uris => Optional[Array[String]],
data_hash => Optional[String],
lookup_key => Optional[String],
data_dig => Optional[String],
datadir => Optional[String],
hiera3_backend => Optional[String],
options => Optional[Hash],
}]]
Changelog
All notable changes to this project will be documented in this file. Each new release typically also includes the latest modulesync defaults. These should not affect the functionality of the module.
v6.0.0 (2024-08-13)
Breaking changes:
- Drop EOL CentOS 8 #336 (Dan33l)
- Drop EOL el7 and Debian 10 #335 (Dan33l)
- Drop Ubuntu 18.04 support #320 (zilchms)
- Drop Puppet 6 support #312 (bastelfreak)
Implemented enhancements:
- puppetlabs/inifile: Allow 6.x #326 (zilchms)
- puppetlabs/stdlib: Allow 9.x #325 (zilchms)
- Add RedHat 8 and 9 support #324 (zilchms)
- Add CentOS 8 and 9 support #323 (zilchms)
- Add Debian 11 support #322 (zilchms)
- Add Ubuntu 22.04 support #321 (zilchms)
- Add RHEL 8 support #307 (tq-t)
Merged pull requests:
- Add documentation and move parameter documentation from README to REFERENCE #318 (zilchms)
- Remove legacy top-scope syntax #316 (smortex)
- Update GPG example to match defaults #310 (davidsandilands)
v5.0.1 (2022-01-12)
Merged pull requests:
v5.0.0 (2022-01-12)
Breaking changes:
- drop CentOS 6, RHEL 6 , Debian 8, Ubuntu 16.04. Add Debian 10 and Ubuntu 18.04 #298 (Dan33l)
- Drop support of Puppet 5 (EOL) #297 (smortex)
Fixed bugs:
- Remove blank newline from epp template #300 (jplindquist)
Merged pull requests:
v4.0.1 (2021-08-26)
Fixed bugs:
Closed issues:
- update metadata.json dependency for puppetlabs/inifile #224
- Fails to install with latest puppetlabs/inifile #214
- yaml backend is populated when using eyaml #177
- Unknown variable: '::pe_server_version' #171
- eyaml: add puppetlabs/puppetserver_gem as an explicit dependency for PE 2015.3 #113
Merged pull requests:
- Allow stdlib 8.0.0 #295 (smortex)
- puppet-lint: autofix #291 (bastelfreak)
- modulesync 3.1.0 & puppet-lint updates #286 (bastelfreak)
- Use voxpupuli-acceptance #284 (ekohl)
- Remove duplicate CONTRIBUTING.md file #277 (dhoppe)
- Rnelson0 patch 1 #267 (rnelson0)
v4.0.0 (2019-11-27)
Breaking changes:
- drop Ubuntu 14.04 support #273 (bastelfreak)
- modulesync 2.7.0 and drop puppet 4 #249 (bastelfreak)
Implemented enhancements:
Closed issues:
- hiera.yaml is word readable, but it can contain secret tokens #265
- Incompatible with Puppet-6 #263
- Cannot install deep_merge gem. #252
Merged pull requests:
- allow puppetlabs/inifile 4.x #274 (bastelfreak)
- Clean up acceptance spec helper #272 (ekohl)
- Format options value as json if it is a hash #270 (ZeroPointEnergy)
- Allow
puppetlabs/stdlib
6.x #262 (alexjfisher)
v3.4.1 (2019-05-01)
Fixed bugs:
Closed issues:
- Permission contention on hiera.yaml between module and PE #245
Merged pull requests:
- Release 3.4.1 #261 (rnelson0)
- Allow
puppetlabs/inifile
3.x #256 (alexjfisher)
v3.4.0 (2019-04-25)
Implemented enhancements:
- Support
hiera5_defaults
options
setting #253 (alexjfisher) - Extend Hiera 5 template to support trocla backend #238 (m4rx0)
Merged pull requests:
- Make
data_hash
inhiera5_defaults
optional #254 (alexjfisher) - Change hiera_yaml to ensure file #247 (m4rx0)
- README.md: remove some obsolete Puppet Open Source default values #241 (kenyon)
- README.md: remove note about FOSS Puppet 3 default #240 (kenyon)
- README.md: correct default of hiera5_defaults #239 (kenyon)
v3.3.4 (2018-10-20)
Merged pull requests:
- modulesync 2.2.0 and allow puppet 6.x and drop puppet 3 #236 (bastelfreak)
v3.3.3 (2018-09-09)
Merged pull requests:
- allow puppetlabs/stdlib 5.x #231 (bastelfreak)
- allow puppetlabs/inifile 2.x #228 (bastelfreak)
- Remove docker nodesets #223 (bastelfreak)
- drop EOL OSs; fix puppet version range #222 (bastelfreak)
v3.3.2 (2018-03-28)
Fixed bugs:
Merged pull requests:
- bump puppet to latest supported version 4.10.0 #217 (bastelfreak)
v3.3.1 (2017-12-09)
Merged pull requests:
- Update Setup Requirements #210 (krisamundson)
v3.3.0 (2017-10-16)
Implemented enhancements:
- Allow eyaml, eyaml_gpg and deep_merge packages to be installed independent of hiera package #208 (treydock)
v3.2.0 (2017-09-17)
Implemented enhancements:
- Add datadir key for hiera5 hierarchy. #204 (ThoTischner)
Closed issues:
- Release new tag incorporating #197, #200 #202
v3.1.0 (2017-08-31)
Implemented enhancements:
Fixed bugs:
- Remove restrictions on custom options hash #200 (reidmv)
- fail is not a resource type, it's a function. #197 (sophomeric)
Merged pull requests:
v3.0.0 (2017-05-11)
Breaking changes:
- replace validate_* calls with datatypes #191 (bastelfreak)
Closed issues:
- Feature Request: Add Param For Passing Gem Install Options #187
Merged pull requests:
- Add gem_install_options parameter #193 (alexjfisher)
- Modulesync 0.19.0 #185 (bastelfreak)
v2.4.0 (2017-01-13)
Closed issues:
- deep_merge_options are not set when merge_behavior => deeper #174
- json backend datadir can not be set #152
- Quoting of hierarchy entries only if string starts with percent sign #146
- Variables in a single-quote is changed to value - should not be (according to the README) #141
- Don't notify pe-puppetserver during eyaml installation #109
Merged pull requests:
- modulesync 0.16.7 #183 (bastelfreak)
- modulesync 0.16.6 #180 (alexjfisher)
- Bump min version_requirement for Puppet + deps #179 (juniorsysadmin)
- modulesync 0.16.4 #178 (bastelfreak)
- Correct spelling of @merge_behavior in template #176 (antaflos)
- Strict variables fix for
pe_server_version
#175 (alexjfisher) - modulesync 0.16.3 #173 (bastelfreak)
- Support deep_merge_options with 'deeper' merge_behavior #172 (antaflos)
- Do not make files in the gnupg home executable. #169 (vStone)
v2.3.0 (2016-11-07)
Closed issues:
- incompatible changes in version 2.2.0 #161
- Problems configuring eyaml-gpg without eyaml #158
- manage_package should exist for eyaml, deep_merge, etc #128
Merged pull requests:
- modulesync 0.15.0 #167 (bastelfreak)
- Update to new is_expected.to syntax in favor of should #166 (vStone)
- Add missing badges #165 (dhoppe)
- Update based on voxpupuli/modulesync_config 0.14.1 #164 (dhoppe)
- Follow manage_package for all packages (Fixes #128) #163 (vStone)
- make eyaml be the first backend #162 (mmckinst)
- modulesync 0.13.0 #160 (bbriggs)
- Test when eyaml_gpg is true and eyaml is unspecified #159 (earsdown)
v2.2.0 (2016-10-10)
Closed issues:
- Add support for 3rd party backends #153
Merged pull requests:
- fixes issue with new backend merge logic #156 (logicminds)
- modulesync 0.12.8 #155 (bastelfreak)
- Fixes #153 - Add support for 3rd party backends #154 (logicminds)
v2.1.2 (2016-08-31)
Merged pull requests:
v2.1.1 (2016-08-19)
Closed issues:
- masterservice in the Documentation #140
- Invalid package provider puppetserver_gem #138
- hiera.yaml incorrectly rendered on puppet 4 #132
- Minor: forge doc says 'masterservice', should be 'master_service' #126
- Does this module work on Windows platform? #82
- OS support in metadata? #63
Merged pull requests:
- Relicense BSD-2-Clause to Apache-2.0 #149 (hunner)
- Modulesync 0.12.2 & Release 2.1.1 #148 (bastelfreak)
- module is compatible with PE2016.2 #144 (vchepkov)
- Update metadata.json to not give dependency errors in puppet3.8 #142 (cryptk)
- modulesync 0.8.0 #139 (bastelfreak)
- modulesync 0.6.2 #137 (bastelfreak)
- add end-of-line after merge_behavior #136 (vchepkov)
- documentation updates for version 2.1.0 #135 (vchepkov)
- Replace
to_yaml
in hiera.yaml template #134 (alexjfisher)
v2.1.0 (2016-05-21)
Closed issues:
- hiera-eyaml-gpg and other gems never installed to puppetserver #129
- hiera-eyaml failing to install with puppetserver_gem as a provider #124
- ReadMe incorrect with regards master_service #122
- Permissions issue on hieradata directory w/ vagrant #114
- Puppet 4 and Above Use /etc/puppetlabs/code/hiera.yaml as the default location for hiera.yaml #97
- Can't specify hiera::hierarchy in hiera #92
- eyaml backend config doesn't quite work with 2015.2.3 #91
- Hiera::params class attempts to set file ownership to
puppet
under Puppet Enterprise 2015.2 #76 - It should be possible to decouple eyaml configuration from package management #67
- Merge configuration, gem not installed by hiera module #62
- manage hiera gem|package? #20
Merged pull requests:
- Update from voxpupuli modulesync_config(0.5.1) #131 (jyaworski)
- Fix issue where find returns exit code 0 regardless of a regex match #130 (treydock)
- Add new eyaml_pkcs7_public/private_key params #127 (alexjfisher)
- Allow puppetserver to be used with foss P3 #125 (hunner)
- proper name for master_service attribute #121 (tuxmea)
- Remove custom eyaml package from test #120 (hunner)
- GH-92: Default to undef for hierarchy on puppet 4+ #119 (jyaworski)
- Merge the package management code into one define. #117 (hunner)
- Allow arbitrary name for hiera-eyaml #116 (hunner)
- Allow managing of the hiera package #104 (jyaworski)
- Add deep_merge support. Fixes GH-38 and GH-62 #103 (jyaworski)
- adding ability to use eyaml_gpg on RHEV based systems #85 (smbambling)
2.0.1 (2016-01-28)
Merged pull requests:
- Fix rubocop trailing comma and errors #111 (hunner)
- Fixes bug in the latest push from PR #102, that doesn't use the _keysdir path when creating keys #110 (smbambling)
2.0.0 (2016-01-27)
Closed issues:
- Hierarchy interpolation seems to have changed. #108
- given the predecent of eyaml, maybe we should manage other gems? #38
Merged pull requests:
1.4.1 (2016-01-08)
Closed issues:
Merged pull requests:
1.4.0 (2016-01-06)
Closed issues:
- versioncmp expects a string value #95
Merged pull requests:
- Only pass strings to versioncmp #98 (hunner)
- Added option to switch on/off the creation of the /etc/hiera.yaml #88 (crayfishx)
- Fixing 2015.2 handling #86 (hunner)
- restart puppet master #71 (vchepkov)
1.3.2 (2015-09-14)
Merged pull requests:
- Clean up style of hiera.yaml.erb template #80 (reidmv)
- Add default compatibility with PE 2015.2.0 #79 (reidmv)
1.3.1 (2015-07-24)
Closed issues:
- In Puppet 3.8.0, pe_puppetserver_gem provider is not working #72
Merged pull requests:
1.3.0 (2015-07-23)
Closed issues:
Merged pull requests:
- make 'eyaml_datair' same as 'datadir' by default #70 (vchepkov)
- Support AIO Puppet 4 #68 (Sharpie)
- Fix typo in backends parameter name. #66 (gabe-sky)
- Added support for PE v3.8.0 #65 (nbetm)
- Fixing broken markdown link #64 (tosbourn)
1.2.0 (2015-03-06)
Closed issues:
- restart required when changing hiera.yaml #55
- Installing hiera-eyaml on a system that uses Ruby 1.8 results in failure #53
- Add support for puppet 3.7 (puppetserver) #46
- Using hiera to manage hiera #17
Merged pull requests:
- Add eyaml gem version param #60 (hunner)
- Terrimonster fix 37 prov #58 (hunner)
- Reformat parameters in README to be more readable #57 (elyscape)
- Restructure/reformat change log #56 (elyscape)
- Updates needed for new release. #52 (dansajner)
- Validate the values of $merge_behavior #51 (tampakrap)
- move unconditional defaults from params to init #50 (tampakrap)
- Add gitignore #49 (tampakrap)
- Added gem_source param to allow a custom Gem source used for eyaml #44 (acjohnson)
- Adding an option to disable creating keys when enabling hiera-eyaml and #42 (mattkirby)
1.1.1 (2014-11-21)
Closed issues:
Merged pull requests:
- Make hiera::eyaml defaults come from base class #40 (hunner)
- Adds puppet forge link to readme #39 (spuder)
- Fix key generation #37 (emning)
- Add 'managed by puppet' comment to hiera.yaml #35 (emning)
- Fix eyaml key permissions #34 (emning)
- Update access to $cmdpath #32 (benjamink)
- Update opensource cmdpath #30 (matthm)
1.1.0 (2014-10-15)
Closed issues:
Merged pull requests:
- We want eyaml to come before yaml by default #29 (hunner)
- Patch eyaml #27 (hunner)
- Add the ability to configure the eyaml file extension #25 (awaxa)
- Extend template configuration options (logger and merge_behavior) #22 (pjfoley)
- thoroughly tested changes to support hiera-eyaml #18 (terrimonster)
- Fix invalid interval warning #16 (danieldreier)
1.0.2 (2014-05-01)
1.0.1 (2014-03-25)
Merged pull requests:
- fixed the README #12 (dhgwilliam)
- Stop Puppet 3 from squawking about variable access #11 (hakamadare)
1.0.0 (2014-02-27)
Merged pull requests:
0.3.1 (2013-06-17)
Merged pull requests:
- Update the pretty pretty documents. #3 (razorsedge)
0.3.0 (2013-06-17)
Merged pull requests:
- Release 0.3.0 #4 (hunner)
- Add autodetect support for Puppet Open Source as well as Puppet Enterprise. #2 (razorsedge)
- Create $datadir only if there are no variables #1 (vholer)
0.2.1 (2012-08-15)
0.2.0 (2012-08-15)
0.1.2 (2012-08-14)
0.1.1 (2012-08-14)
0.1.0 (2012-08-14)
* This Changelog was automatically generated by github_changelog_generator
Dependencies
- puppetlabs/stdlib (>= 4.13.1 < 10.0.0)
- puppetlabs/inifile (>= 1.4.1 < 7.0.0)
- puppetlabs/puppetserver_gem (>= 1.0.0 < 2.0.0)
Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.