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 <gada...@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 > 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. > -- 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.