How to reference a hiera variable from elsewhere the hierarchy

hierapuppet

So suppose in a very specific hiera YAML file I define a variable, such as "env_name".

env_name: "dev-unstable"

Now in a more general hiera file I'd like to interpolate that variable into a string.

server_name: "service-%{env_name}.%{::domain}"

My testing seems to imply that hiera variables from elsewhere in the hierarchy aren't made available for interpolation in general cases. Is that true, unfortunately?

Best Answer

You can use Hiera lookup functions within Hiera. Documentation here: https://docs.puppetlabs.com/hiera/1/variables.html#using-lookup-functions

In your case you would use:

server_name: "service-%{hiera('env_name')}.%{::domain}"

This is a priority lookup and will get the value for the key env_name from the highest (most specific) hierarchy level in which it finds the key.

This requires Hiera 1.3 or higher.

Related Topic