The way PeopleSoft delivers Puppet and the Hiera backend, is that everything you define in
psft_customizations.yaml overrides configuration defined elsewhere. This is a useful setup when getting started with the DPK and Puppet. But when using YAML files to manage your configuration across multiple servers, you’ll quickly find that you are re-entering the same configuration in many files.
Hiera, the tool Puppet uses to read YAML files, has multiple ways to look up data. First, let’s cover what a YAML hash is. A hash is a key-value structure used in the DPK to store configuration. For example, this is the hash for PS_HOME information:
The main hash key is
ps_home, and its value is all the configuration below it. The next level down has 4 keys with 4 corresponding values. The
appserver_domain_list hash is a large one that contains all the configuration for one or more app server domains.
Under the delivered setup, if you want to change a value for a domain you need to copy the entire
appserver_domain_list hash into your
psft_customizations.yaml file and make the change. With Hiera hashing, you could define your domains in a file named
appservers.yaml and any specific server changes can be defined in
hostname.yaml. For example, the
hostname.yaml file could contain this hash to override a configuration:
This provides far more flexibility when working with YAML files, but it does introduce some complexity. If you want to give this a try, here is how you can convert the current DPK to use Hiera hasing.
I used VisualStudio Code to do the find/replace. Open up the
etc\modules directory and do these against the
I repeated this step for the following lookups.
You don’t want to replace all the lookups – that will cause errors. But, you can replace additional lookups if you want. Anything that is a hash in YAML files can use the
hiera_hash() lookup function. If you wanted to make the
ps_home: key support hash merging, you could replace
Change the Hiera Merge Behavior
By default, Hiera will look at the top-level keys of a hash and not merge the underlying settings. Hiera hashing will merge all the values inside the hash. This means you can you define a hash with default settings in a common file (e.g, default app server settings). Then you can specify server or application specific settings in a YAML file for that domain or server.
To enable the hash merging, open the
hiera.yaml file under
Add this line to the file:
Hiera Lookup Order
With Hiera hash merging, we can utilize more than the
psft_customizations.yaml file to manage our configuration. We can use multiple YAML files to control our configuration. For example, we could have:
So, this setup would let us define common configuration that is shared across all applications in the
common.yaml. Next, we could define anything related to servers that run HR applications in the
hr.yaml. For any settings that are specific to the Development region, we can add them into
dev.yaml. Last, for anything that is specific to the server, we can add into the
[hostname].yaml file. This setup would let you re-use the
dev YAML files across multiple servers, and anything specific to the server would be defined in
hiera.yaml file, we can define this setup like this:
Test Hiera Hashing
On the command line, you can use the
hiera utility to test lookups with Hiera. To do a normal Hiera lookup, use
To test a hiera hash lookup, use
hiera --hash appserver_domain_list
If you have multiple YAML files with the
appserver_domain_list hash, the first option will only show you the results from the top of the list. The second test should show you a merged