I managed to sort this out by checking out the latest hiera-puppet and upgrading the hiera & hiera-puppet gems to 1.0.1.0rc4 & 1.01.0rc3 respectively.
After updating hiera-puppet, be sure to restart the puppet master. If you do not update hiera & hiera-puppet gems, you may encounter the error: “no such file to load — hiera_puppet”. This issue is documented in the following bug report: http://projects.puppetlabs.com/issues/15570 To update your hiera gems run: gem install hiera hiera-puppet --pre (pre will install the release candidates instead of 0.0.3) -Evan On Wednesday, August 22, 2012 3:44:21 PM UTC-4, Evan Stachowiak wrote: > > I'm running into the same issue on Ubuntu 10.04, hiera 0.3.0, puppet > 2.7.18, ruby187. > > Hiera can lookup values, but only if there is no variable interpolation in > /etc/puppet/hiera.yaml. > > :hierarchy: > - '%{operatingsystem}' > - common > > will give this error: > err: Could not retrieve catalog from remote server: Error 400 on SERVER: > can't convert nil into String > > while > > :hierarchy: > - common > > works without any errors. > > I also ran into this trying to setup hiera to use different hieradata > directories based on environment. > > :yaml: > - '/etc/puppet/environments/production/hieradata' > > works properly. > > :yaml: > - 'etc/puppet/environments/%{environment}/hieradata' > > will give the same error: > err: Could not retrieve catalog from remote server: Error 400 on SERVER: > can't convert nil into String > > Thanks, > Evan > > > On Friday, August 17, 2012 6:52:38 AM UTC-4, linuxbsdfreak wrote: >> >> Hi, >> >> I figured that out and did the changes to verify. However it doesn't >> parse the hierarchy to override the values. I did a quick test to only use >> the operatingsystem fact in hierarchy. It doesnt pickup the value from it >> also. Even though the machine is CentOS. I dont know if hiera 0.3.0 works >> with ruby1.9.3 >> >> Regards, >> Kevin >> >> >> On Friday, August 17, 2012 12:13:37 PM UTC+2, denmat wrote: >>> >>> Sorry, your hiera config points to: >>> -'%{operatingsystem}' >>> - '%{platform}/%{location}/%{role} >>> - common role >>> >>> But the facts you have are: >>> company_role >>> company_platform >>> company_location >>> >>> So unless you have facts platform, location, and role defined they >>> aren't going to match up. It's like the facts you've used below: >>> >>> hiera -c /etc/puppet/hiera.yaml hsflowd_port platform=production >>> location=frankfurt role=dev_tst >>> >>> So role = dev_tst does not equal custom_role = dev_tst >>> >>> -- you get what I mean? >>> >>> Something like this might work: >>> -'%{operatingsystem}' >>> - %{custom_platform}/%{custom_location}/%{custom_role} >>> - '%{platform}/%{location}/%{role}' >>> >>> See if that works, >>> Den >>> On 17 Aug 2012 19:31, "linuxbsdfreak" <linuxb...@gmail.com> wrote: >>> >>>> Just for info i am running ruby-1.9.3p194. >>>> >>>> >>>> On Friday, August 17, 2012 9:28:13 AM UTC+2, linuxbsdfreak wrote: >>>>> >>>>> Hi, >>>>> >>>>> The default value works when i set the value in common.yaml. Strange >>>>> part is why isnt hiera find the value in the hierarchy, since i want to >>>>> override the default value according to a facter fact. >>>>> >>>>> Regards, >>>>> Kevin >>>>> >>>>> On Friday, August 17, 2012 2:57:03 AM UTC+2, denmat wrote: >>>>>> >>>>>> Hi, >>>>>> >>>>>> Can't see anything that stands out in the quick glance, but here's >>>>>> how you can dig further: >>>>>> >>>>>> Use --debug on your puppet run and you'll get an output of what hiera >>>>>> is going through. Second, use notify to print out the variables you are >>>>>> trying to access, making sure they match with what hiera is looking for >>>>>> and >>>>>> what you expect. You can also try setting the default for the >>>>>> hsflowd_port >>>>>> and see if that solves your problems or there are others (not saying you >>>>>> should only use the default, just to further your own investigations). >>>>>> >>>>>> $hsflowd_port = hiera('hsflowd_port', '8080'), >>>>>> >>>>>> >>>>>> >>>>>> HTH, >>>>>> Den >>>>>> >>>>>> On 17/08/2012, at 1:38, linuxbsdfreak <linuxb...@gmail.com> wrote: >>>>>> >>>>>> Typo error location=frankfurt is actually location=london. >>>>>> >>>>>> On Thursday, August 16, 2012 5:25:17 PM UTC+2, linuxbsdfreak wrote: >>>>>>> >>>>>>> Hi All, >>>>>>> >>>>>>> I am using hiera for storing configuration values. I have setup >>>>>>> puppet to use facter following the article from >>>>>>> >>>>>>> http://nuknad.com/2011/02/11/**s**elf-classifying-puppet-nodes/<http://nuknad.com/2011/02/11/self-classifying-puppet-nodes/> >>>>>>> >>>>>>> I have custom facts >>>>>>> >>>>>>> company_role >>>>>>> company_platform >>>>>>> company_location >>>>>>> >>>>>>> I have defined the following in hiera.yaml >>>>>>> >>>>>>> --- >>>>>>> :backends: >>>>>>> - yaml >>>>>>> >>>>>>> :logger: console >>>>>>> >>>>>>> :hierarchy: >>>>>>> - '%{operatingsystem}' >>>>>>> - '%{platform}/%{location}/%{**rol**e}' >>>>>>> - common >>>>>>> >>>>>>> :yaml: >>>>>>> :datadir: '/etc/puppet/hieradata' >>>>>>> >>>>>>> >>>>>>> and i create the directories /etc/puppet/hieradata/**producti** >>>>>>> on/london/dev_tst.yaml >>>>>>> >>>>>>> I have something like this in the above file >>>>>>> >>>>>>> --- >>>>>>> >>>>>>> hsflowd_port: 8080 >>>>>>> >>>>>>> company_role: dev_tst >>>>>>> company_platform: production >>>>>>> company_location: london >>>>>>> >>>>>>> Given a system with the above facts connecting to puppetmaster. When >>>>>>> i run the client i get the following error >>>>>>> >>>>>>> Err: Could not retrieve catalog from remote server: Error 400 on >>>>>>> SERVER: Could not find data item hsflowd_port in any Hiera data file >>>>>>> and no >>>>>>> default supplied at /etc/puppet/modules/hsflowd/**ma** >>>>>>> nifests/config.pp. >>>>>>> >>>>>>> >>>>>>> For some reason its not getting the value. However when i do the >>>>>>> following from the command line >>>>>>> >>>>>>> hiera -c /etc/puppet/hiera.yaml hsflowd_port platform=production >>>>>>> location=frankfurt role=dev_tst >>>>>>> >>>>>>> I get the value. >>>>>>> >>>>>>> Following is my manifest: >>>>>>> >>>>>>> class hsflowd::config( >>>>>>> $hsflowd_user = hiera('hsflowd_user'), >>>>>>> $hsflowd_group = hiera('hsflowd_group'), >>>>>>> $hsflowd_config_dir = hiera('hsflowd_config_dir'), >>>>>>> $hsflowd_port = hiera('hsflowd_port'), >>>>>>> ) >>>>>>> >>>>>>> { >>>>>>> >>>>>>> file { >>>>>>> "${hsflowd_config_dir}/**hsflowd**.conf": >>>>>>> ensure => present, >>>>>>> content => template("${module_name}/**hsflo** >>>>>>> wd.conf.erb"), >>>>>>> owner => $hsflowd_user, >>>>>>> group => $hsflowd_group, >>>>>>> mode => '0644'; >>>>>>> } >>>>>>> >>>>>>> Is something wrong that i am doing? >>>>>>> >>>>>>> Regards, >>>>>>> Kevin >>>>>>> >>>>>>> >>>>>>> -- >>>>>> You received this message because you are subscribed to the Google >>>>>> Groups "Puppet Users" group. >>>>>> To view this discussion on the web visit https://groups.google.com/d/ >>>>>> **msg/puppet-users/-/**L2PKd1u1QAgJ<https://groups.google.com/d/msg/puppet-users/-/L2PKd1u1QAgJ> >>>>>> . >>>>>> To post to this group, send email to puppet...@googlegroups.com. >>>>>> To unsubscribe from this group, send email to >>>>>> puppet-users...@googlegroups.**com. >>>>>> For more options, visit this group at http://groups.google.com/** >>>>>> group/puppet-users?hl=en<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 view this discussion on the web visit >>>> https://groups.google.com/d/msg/puppet-users/-/3rPfzeEvIMUJ. >>>> To post to this group, send email to puppet...@googlegroups.com. >>>> To unsubscribe from this group, send email to >>>> puppet-users...@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 view this discussion on the web visit https://groups.google.com/d/msg/puppet-users/-/vw0OWL38nBUJ. 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.