Greetings, 

 I don't know why, but I am having a rough time trying to get hiera to 
work. It seems to me that all the examples I see online are either absurdly 
complex or so stupidly simple that they are absolutely useless. Either way 
I have found the documentation for hiera completely lacking (it doesn't 
help that there is a lot of bad information pertaining old puppet releases 
that is no longer the correct way to do things...at least according to 
other sources which may or may not be the correct way either...bleck...). 
Of all the documentation/blogs/examples/ect I have been pouring over the 
last 2 hours, not one has given me a useful hint at getting this working. 


 *deep breath in an attempt to control my frustration so I can communicate 
on a somewhat intelligent level* 

Whew... 

 OK. Lets start. 


 $ puppet -V 

3.7.1 

$ hiera -V 

1.3.4 

$ hostname 

puppet.test.vm 

$ sudo puppet cert list --all 

+ "puppet.test.vm" <snip blah blah string> 


 This is as simple as I can make it. 


 $ cd /etc/puppet 

$ find . -type f 

./modules/testhiera/manifests/init.pp 

./manifests/site.pp 

./puppet.conf <- did not touch after test vm install 

./auth.conf <- did not touch after test vm install 

$ cat manifests/site.pp 

node 'puppet.test.vm' { 

class { 'testhiera': } 

} 

$ cat modules/testhiera/manifests/init.pp 

class testhiera ( $test="blah") { 

file { "/tmp/$test" : ensure => present} 

} 

$ puppet agent -t 

Info: Retrieving pluginfacts 

Info: Retrieving plugin 

Info: Caching catalog for puppet.test.vm 

Info: Applying configuration version '1412771807' 

Notice: /Stage[main]/Testhiera/File[/tmp/blah]/ensure: created 

Notice: Finished catalog run in 0.04 seconds 

$ rm /tmp/blah 

  
Hooray! That works. Can't get much simpler then that, right? OK, lets add 
in hiera. Should be simple right? Ha!

 
$ sudo ln -s /etc/puppet/hiera.yaml /etc/hiera.yaml 

$ find . -type f 

./hiera.yaml 

./hosts/puppet.test.vm.yaml 

./modules/testhiera/manifests/init.pp 

./manifests/site.pp 

./puppet.conf 

./auth.conf 

# Only added these two files below; made no other changes 

$ cat hiera.yaml 

--- 

:hierarchy: 

- hosts/%{clientcert} 

:backends: 

- yaml 

:yaml: 

:datadir: '/etc/puppet/' 

$ cat hosts/puppet.test.vm.yaml 

--- 

hieratest::test: yadda 

$ hiera hieratest::test clientcert=puppet.test.vm 

yadda 

# Hiera on the command line works. I must be making progress!!


$ sudo puppet agent -t 

Info: Retrieving pluginfacts 

Info: Retrieving plugin 

Info: Caching catalog for puppet.test.vm 

Info: Applying configuration version '1412771807' 

Notice: /Stage[main]/Testhiera/File[/tmp/blah]/ensure: created 

Notice: Finished catalog run in 0.03 seconds 

 
What??? That is absolutely contrary to the documentation! It should have 
created /tmp/yadda! I am looking at the official docs right now on using a 
hiera variable with a default variable and I don't see how my example is 
any different in the slightest! Blah should have only been used as a 
default if the host wasn't found. Clearly either puppet can't find hiera 
and used default, or it simply ignored the hiera data. 


  Fine. We will take out the default blah and force it to use something 
from hiera. 


$ rm /tmp/blah 

$ cat modules/testhiera/manifests/init.pp 

class testhiera ( ) { 

file { "/tmp/$test" : ensure => present} 

} 

$ sudo puppet agent -t 

Info: Retrieving pluginfacts 

Info: Retrieving plugin 

Info: Caching catalog for puppet.test.vm 

Info: Applying configuration version '1412773578' 

Notice: Finished catalog run in 0.04 seconds 

 
What? No blah, no yadda, nothing! I don't even get an error!! 

 
OK. OK. Fine. Maybe it doesn't like something in hiera. I will give hiera a 
default. 


$ find . -type f 

./hiera.yaml 

./modules/testhiera/manifests/init.pp 

./puppet.conf 

./hosts/common.yaml 

./hosts/puppet.test.vm.yaml 

./auth.conf 

./manifests/site.pp 

$ cat hiera.yaml 

--- 

:hierarchy: 

- hosts/%{clientcert} 

- hosts/common 

:backends: 

- yaml 

:yaml: 

:datadir: '/etc/puppet/' 

$ cat hosts/common.yaml 

--- 

hieratest::test: blarg 

$ hiera hieratest::test clientcert=puppet.test.vm 

yadda 

$ hiera hieratest::test clientcert=some.thing.else 

blarg 

 
Yeah...alright...hiera on the command line is giving me exactly what I 
want. I have feeling good about this one... 


$ sudo puppet agent -t 

Info: Retrieving pluginfacts 

Info: Retrieving plugin 

Info: Caching catalog for puppet.test.vm 

Info: Applying configuration version '1412773578' 

Notice: Finished catalog run in 0.06 seconds 

$ ls /tmp/blah /tmp/yadda /tmp/blarg 

ls: cannot access /tmp/blah: No such file or directory 

ls: cannot access /tmp/yadda: No such file or directory 

ls: cannot access /tmp/blarg: No such file or directory 

 
ACK!!!! What the hell?!?!! Nothing? Not even an error?? Even running –debug 
on that puppet run gives me jack-squat of information. There isn't anything 
in the puppet master logs either.

 
I have tried doing the hiera_include (even though several places say don't 
though they fail to mention why not). I have tried doing $t2 = 
hiera('test') and creating /tmp/$t2 and that still gave me nothing. I have 
tried referencing it by full scope hieradata::test (again, even though the 
docs say don't do this) and still nothing. 

 
Clearly, the hiera data works because it gives me exactly what I want on 
the command line. Puppet just seems to flat out ignore it. I can't get any 
of the examples to work.


 HOWEVER, I tested a few of the puppet forge programs and THEY can 
reference their hiera data just fine! Oh that really got me riled up...So 
it isn't puppet because it works with their code. It has to be something in 
my code. So I reset the VM back to my code and I fail to understand why my 
incredibly simple code isn't working and I am seriously frustrated why I 
can't get any of the official documentation examples to work either.


 I need to go take a break from this...but I would be so very very grateful 
if someone could point out where I am going wrong. Hiera works, but 
Puppet+Hiera doesn't and I just don't understand why...Since the puppet 
forge code works, it *must* be something I have/haven't done but I can not 
seem to find it. The docs certainly aren't helping either. Any 
pointers/tips/examples/information would be greatly appreciated.


 Thanks!

~Stack~

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/puppet-users/35af4238-b174-42ee-bba9-60fcac5f7b56%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to