Search code examples
puppethiera

Why does hiera look in the "services" subdirectory?


I have been experimenting with hiera for configuration data. The hiera.yaml file has the following configuration:

---
:backends:
  - yaml
:hierarchy:
  - "servers/%{hostname}"
  - common

but when I run hiera from the command line to test it,

hiera some::var hostname=foo

it does not pick up the configuration from servers/foo/yaml. Adding the -d (debug) option shows that it doesn't even look at that file. Instead, it says something like:

Looking for data source services/foo
Cannot find database /etc/puppet/hiera/services/foo.yaml, skipping

So, two questions:

  1. Why is it not looking in the servers directory?

  2. Why is it looking in a "services" directory? (Note that it looks for things in the services directory even if we remove the "servers/%{::hostname}" line from the hiera.yaml file!)

    If by default hiera looks for things in special directories like "services", then where is this documented?


Solution

  • Apparently, the configuration will work if: hiera is run with the -c option to specify the exact location of the configuration file. (A symlink from /etc/hiera.yaml did not work, though that was a suggestion from another forum https://ask.puppetlabs.com/question/3149/where-does-hiera-search-for-data-sources/?answer=3152#post-id-3152)