Re: [Puppet Users] Determining if hiera (or any function) is installed on a node

Geoff Davis
Tue, 17 Apr 2012 19:42:01 -0000

Cool, thanks for the quick response.

In the meantime, it might be helpful to ship a default hiera.yaml in the
PuppetLabs packages.

I''m using the Vagrant boxes from vstone.eu [1], and he''s just
pulling your Puppet packages from yum.puppetlabs.com. [2]

Version in my VM is:
puppet.noarch       2.7.13-1.el6        puppetlabs

[1] http://packages.vstone.eu/vagrant-boxes/
[2] http://packages.vstone.eu/vagrant-boxes/CHANGELOG

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



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

> And here''s the bug to track -->
http://projects.puppetlabs.com/issues/10367
>
> On Tue, Apr 17, 2012 at 12:31 PM, Eric Shamow <eric@puppetlabs.com>
wrote:
> As a +1 on this (and as the guy who wrote safe_hiera) --
>
> It shouldn''t be a function, the safety should be wrapped into
hiera.  But yes, this will get you the right syntax so you can just
search/replace safe_hiera for hiera once it''s fixed.
>
> -Eric
>
> --
>
> Eric Shamow
> Professional Services
> http://puppetlabs.com/
> (c)631.871.6441
>
> On Tuesday, April 17, 2012 at 12:29 PM, Gary Larizza wrote:
>
>> Hey Geoff,
>>
>> We actually had a talk about this.  There is this code that will help
catch that scenario FOR NOW -->
https://github.com/puppetlabs/hiera-puppet/pull/23
>>
>> I believe this is a bug and should DEFINITELY be fixed in source.
Until then, the ''safe_hiera()'' function allows you to make
this check.
>>
>>
>>
>> On Tue, Apr 17, 2012 at 12:21 PM, Geoff Davis <gadavis@ucsd.edu>
wrote:
>>> 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
>>> gadavis@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
<gadavis@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
>>>>> gadavis@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
<gadavis@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
<gadavis@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+unsubscribe@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+unsubscribe@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+unsubscribe@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+unsubscribe@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+unsubscribe@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+unsubscribe@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+unsubscribe@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+unsubscribe@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