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?
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:
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.
For Hiera 5, used in Puppet 5, use the following syntax:
...where
%{lookup('env_name')}
is the part that gets the data from other hiera key.(Source)
See the answer from Greg Dubicki.
To quote "The hiera, hiera_array, hiera_hash, and hiera_include functions are all deprecated. The lookup function is a complete replacement for all of these."
For details see:
https://puppet.com/docs/puppet/5.5/hiera_migrate.html#updated_classic_hiera_function_calls