I received this error after making some changes to a Hiera config and the referenced “dev-server” role.
Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Error from DataBinding 'hiera' while looking up 'role::dev-server::use_ssl': undefined method `empty?' for nil:NilClass on node servername.local Warning: Not using cache on failed catalog Error: Could not retrieve catalog; skipping run
It turns out this is a vague syntax error. Checking the following has worked for me:
- Ensuring the syntax of your Hiera YAML or JSON file is correct. Check for trailing commas in JSON, or misplaced colons. (“foo:bar”, “foo::bar:”, “foo:::bar”, etc.)
- The variable name is unique. In one case, “dev-server::use_ssl” was configuring a child resource with the same “use_ssl” property/param/variable.
- There are no empty YAML or JSON files in your hieradata directory. I think I’ve had a similar issue with temp files (*~)
- If you’ve modified your hiera.yaml to add a new hierarchy or something, restart Puppet.