$ hiera -d -c /path/to/hiera.yaml jrs_config_server1 fqdn=hostname
$ puppet master —no-daemonize —debug
The arguments of the function must be provided as an array, even if there is only one argument.
Using the Lookup Functions From Templates
In general, don’t use the Hiera functions from templates. That pattern is too obscure, and will hurt your code’s maintainability — if a co-author of your code needs to change the Hiera invocations and is searching.pp files for them, they might miss the extra invocations in the template. Even if only one person is maintaining this code, they’re likely to make similar mistakes after a few months have passed.
It’s much better to use the lookup functions in a Puppet manifest, assign their value to a local variable, and then reference the variable from the template. This keeps the function calls isolated in one layer of your code, where they’ll be easy to find if you need to modify them later or document them for other users.
Try putting the variable in common.yaml at the bottom of the hierarchy and see if it gets picked up. If it does then perhaps the value of the fqdn fact isn't what you think it is.
You can also try running puppetmaster in the foreground in debug mode:
$ puppet master �no-daemonize �debug
Now when you run puppet you should see the Hiera lookups happening as the catalog is compiled, this might help you pinpoint the problem..
On Friday, May 10, 2013 3:46:28 PM UTC+1, Jonathan Gazeley wrote:
Hi Jon,
Thanks for your tip. I had made a typo in my yaml which debug mode
picked up. I fixed it, and now your command works when run on the
puppetmaster but the same error persists when the variable is accessed
either from a manifest or from a template during a puppet agent run.
I'm wondering if it might be something to do with the agents not syncing
the hiera data store, perhaps? I'm new to hiera...
Cheers,
Jonathan
On 10/05/13 14:25, Jon Ward wrote:
> Hi,
>
> Have you tried doing the Hiera lookup on the command line to double
> check it can be read?
>
> � � $ hiera -d -c /path/to/hiera.yaml jrs_config_server1 fqdn=hostname
>
>
> Cheers,
>
> Jon
>
> On Friday, May 10, 2013 12:18:22 PM UTC+1, Jonathan Gazeley wrote:
>
> � � Hi,
>
> � � I'm having a problem accessing Hiera data from within templates.
> � � Yes, I
> � � know this is not the recommended way to access Hiera data, but in
> � � my use
> � � case I think it will be easier overall.
>
> � � In manifests, this code works:
>
> � � {
> � � � �ip => hiera('jrs_config_server1'),
> � � }
>
> � � In a template, part of the same module as the manifest, this does
> � � not work:
>
> � � ipaddr = <%= scope.function_hiera(["jrs_config_server1"]) %>
>
> � � It fails with this error:
>
> � � Could not find data item jrs_config_server1 in any Hiera data file
> � � and
> � � no default supplied
>
> � � The value of " jrs_config_server1" is in Hiera, specific to the
> � � fqdn of
> � � the node. I'm struggling to see why it would not be working. Any
> � � ideas?
>
> � � Cheers,
> � � Jonathan
>
> --
> You received this message because you are subscribed to the Google
> Groups "Puppet Users" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to puppet-users...@googlegroups.com.
> To post to this group, send email to puppet...@googlegroups.com.
> Visit this group at http://groups.google.com/group/puppet-users?hl=en.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
--
You received this message because you are subscribed to the Google Groups "Puppet Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to puppet-users...@googlegroups.com.
To post to this group, send email to puppet...@googlegroups.com.
Visit this group at http://groups.google.com/group/puppet-users?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.
�
�