Alas that doesn't work as the manifest fails to compile properly without the 
/etc/puppet/hiera.yaml file being there.

Nan's code does provide defaults for the hiera lookups similar to what you are 
doing below, but the compiler balks before they are even evaluated.

Here's the version of staging/init.pp that generated the error below: 
https://github.com/nanliu/puppet-staging/blob/5e1a8763ae36c2ea21c0a5b6a1f0e586e077f0fd/manifests/init.pp

Note that all of the hiera calls have defaults.

Geoff Davis
Scripps Institution of Oceanography
gada...@ucsd.edu, (858) 822-5756



On Apr 17, 2012, at 12:14 PM, Gary Larizza wrote:

> Hey Geoff,
> 
> I see that as two separate steps (Is Hiera enabled and is Hiera configured).  
> I think the function satisfies the former, but you might want to write your 
> own check for the latter (as each person probably interprets 'configured' 
> differently).  You could do a check like:
> 
> if function_available('hiera') and hiera('hiera_enabled', false) {
>   <do something with hiera>
> } else {
>   <do something without hiera>
> }
> 
> This would do a hiera lookup for a parameter 'hiera_enabled' that could be 
> set in your common/global.yaml file (while defaulting to false if it's not 
> found).
> 
> 
> 
> On Tue, Apr 17, 2012 at 12:09 PM, Geoff Davis <gada...@ucsd.edu> wrote:
> I've found a potential issue, but I'm not sure if this is within the scope of 
> function_available or not.
> 
> The vagrant basebox I'm using actually does ship with puppet-hiera, but 
> there's no /etc/puppet/hiera.yaml
> 
> Thus, even though function_available('hiera') returns true, the function 
> isn't actually usable:
> 
> Hiera config file /etc/puppet/hiera.yaml not readable at 
> /tmp/vagrant-puppet/modules-0/staging/manifests/init.pp:31 on node 
> centos-6-vagrant.vagrantup.com
> 
> Is there a way to check whether the function is actually usable as well?
> 
> Geoff Davis
> Scripps Institution of Oceanography
> gada...@ucsd.edu, (858) 822-5756
> 
> 
> 
> On Apr 17, 2012, at 11:56 AM, Ken Barber wrote:
> 
>> I'm going to review this now. Its destined for master, so someone from
>> the release team can probably comment on the next major release
>> schedule for stdlib.
>> 
>> On Tue, Apr 17, 2012 at 7:35 PM, Geoff Davis <gada...@ucsd.edu> wrote:
>>> That's what I'm looking for. I'll fold in that branch into my testing until
>>> it goes mainline.
>>> 
>>> Any ETA on it going mainline?
>>> 
>>> 
>>> On Apr 17, 2012, at 11:14 AM, Nigel Kersten wrote:
>>> 
>>> 
>>> 
>>> On Tue, Apr 17, 2012 at 11:08 AM, Geoff Davis <gada...@ucsd.edu> wrote:
>>>> 
>>>> I'm doing some work on module development inside of a Vagrant VM of CentOS
>>>> 6.2. This VM has the community version of Puppet installed (2.7.13 I 
>>>> think),
>>>> but that doesn't include Hiera by default.
>>>> 
>>>> My module is dependent on Nan Liu's puppet-staging module, which requires
>>>> hiera. This puts me into the proverbial chicken and egg problem of not
>>>> having a puppet function but also not being able to install it with puppet,
>>>> since my manifests don't compile due to the hiera function not being
>>>> available.
>>>> 
>>>> Right now, I'm doing a manual bootstrap of a new vagrant box with a
>>>> dedicated Puppet manifest that calls another one of Nan's modules,
>>>> puppet-hiera, to install hiera on the Vagrant VM, but I'd rather use the
>>>> same manifest for both bootstrap and module testing. I don't care if it
>>>> takes two passes to converge, I just don't want a freshly booted Vagrant 
>>>> box
>>>> to complain because it can't compile it's manifest.
>>>> 
>>>> Is there a relatively foolproof way to determine if Puppet has a function
>>>> available to it or not? Is there a "has_function" function available in the
>>>> Puppet DSL, or is there a check that I could roll into a fact that works
>>>> cross-platform and between Puppet Enterprise and Community?
>>>> 
>>> 
>>> There's a pending pull request in the stdlib module for adding a
>>> function_available function
>>> 
>>> https://github.com/puppetlabs/puppetlabs-stdlib/pull/59
>>> 
>>> 
>>> 
>>> --
>>> You received this message because you are subscribed to the Google Groups
>>> "Puppet Users" group.
>>> To post to this group, send email to puppet-users@googlegroups.com.
>>> To unsubscribe from this group, send email to
>>> puppet-users+unsubscr...@googlegroups.com.
>>> For more options, visit this group at
>>> http://groups.google.com/group/puppet-users?hl=en.
>>> 
>>> 
>>> --
>>> You received this message because you are subscribed to the Google Groups
>>> "Puppet Users" group.
>>> To post to this group, send email to puppet-users@googlegroups.com.
>>> To unsubscribe from this group, send email to
>>> puppet-users+unsubscr...@googlegroups.com.
>>> For more options, visit this group at
>>> http://groups.google.com/group/puppet-users?hl=en.
>> 
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Puppet Users" group.
>> To post to this group, send email to puppet-users@googlegroups.com.
>> To unsubscribe from this group, send email to 
>> puppet-users+unsubscr...@googlegroups.com.
>> For more options, visit this group at 
>> http://groups.google.com/group/puppet-users?hl=en.
> 
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Puppet Users" group.
> To post to this group, send email to puppet-users@googlegroups.com.
> To unsubscribe from this group, send email to 
> puppet-users+unsubscr...@googlegroups.com.
> For more options, visit this group at 
> http://groups.google.com/group/puppet-users?hl=en.
> 
> 
> 
> -- 
> 
> Gary Larizza
> Professional Services Engineer
> Puppet Labs
> 
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Puppet Users" group.
> To post to this group, send email to puppet-users@googlegroups.com.
> To unsubscribe from this group, send email to 
> puppet-users+unsubscr...@googlegroups.com.
> For more options, visit this group at 
> http://groups.google.com/group/puppet-users?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To post to this group, send email to puppet-users@googlegroups.com.
To unsubscribe from this group, send email to 
puppet-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en.

Reply via email to