Why Hiera?
What do we mean by configuration data? There will be lots of pieces of information in your manifests which we can regard as configuration data; for example, the values of all your resource attributes. Look at the following example:
package { 'puppet-agent': ensure => '1.10.1-1xenial', }
The manifest declares that version '1.10.1-1xenial'
of the puppet-agent
package should be installed. But what happens when a new version of Puppet is released? When you want to upgrade to it, you'll have to find this code, possibly deep in multiple levels of directories, and edit it to change the desired version number.
Data needs to be maintained
Multiply this by all the packages managed throughout your manifest, and there's already a problem. Yet this is just one piece of data that needs to be maintained, while there are many more—the times of cron jobs, the email addresses for reports to be sent to, the URLs of files to fetch from the Web, the parameters for monitoring checks, the amount of...