Chapter 2. Managing Puppet Data with Hiera
The history of Puppet is an interesting example of how best practices have evolved with time, following new usage patterns and contributions from the community.
Once people started to write manifests with Puppet's DSL and express the desired state of their systems, they found themselves placing custom variables and parameters that expressed various resources of their infrastructures (IP addresses, hostnames, paths, URLs, names, properties, lists of objects, and so on) inside the code used to create the needed resource types.
At times, variables were used to classify and categorize nodes (systems' roles, operational environments, and so on), other times facts (such as $::operatingsystem
) were used to provide resources with the right names and paths according to the underlying OS.
Variables could be defined in different places; they could be set via an External Node Classifier (ENC), inside node declarations or inside classes.
There...