Testing Hiera data on the command line
As you set Hiera data or rearrange your hierarchy, it is important to double-check the data a node receives.
The puppet lookup
command helps test data interactively. For
example:
puppet lookup profile::hiera_test::backups_enabled --environment production --node jenkins-prod-03.example.comThis returns the value
true
.
To use the puppet
lookup
command effectively:
- Run the command on a Puppet Server node, or on another node that has access to a full copy of your Puppet code and configuration.
- The node you are testing against should have contacted the
server at least one time as this makes the facts for that node available to the
lookup
command (otherwise you need to supply the facts yourself on the command line). - Make sure the command uses the global
confdir
andcodedir
, so it has access to your live data. If you’re not runningpuppet lookup
as root user, specify--codedir
and--confdir
on the command line. - If you use PuppetDB, you can
use any node’s facts in a lookup by specifying
--node <NAME>
. Hiera can automatically get that node’s real facts and use them to resolve data. - If you do not use PuppetDB,
or if you want to test for a set of facts that don't exist, provide facts in a
YAML or JSON file and specify that file as part of the command with
--facts <FILE>
. To get a file full of facts, rather than creating one from scratch, runfacter -p --json > facts.json
on a node that is similar to the node you want to examine, copy thefacts.json
file to your Puppet Server node, and edit it as needed.- Puppet Development Kit comes with predefined fact sets for a variety of platforms. You can use those if you want to test against platforms you do not have, or if you want "typical facts" for a kind of platform.
- If you are not getting the values you expect, try re-running
the command with
--explain
. The--explain
flag makes Hiera output a full explanation of which data sources it searched and what it found in them.
Related topics: The puppet lookup command, confdir, codedir.