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

Gary Larizza
Tue, 17 Apr 2012 19:29:53 -0000

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