On Wednesday, 5 December 2012 02:10:00 UTC, Pete wrote:
>
> On 4 December 2012 21:17, Vaidas Jablonskis <jablo...@gmail.com<javascript:>
> > wrote:
>
>> Yes, it is that simple.
>
>
> I gave it a go just after I sent my email and it works like a charm.
>
>
> The other way of doing (some people prefer this way actually) is to put 
>> your variables inside the actual class (not as parameters of the class), 
>> for example:
>>
>> class foo {
>>   $my_parameter       = hiera('foo::my_parameter', 'default_value')
>>   $another_parameter = hiera('foo::another_parameter', 'some default 
>> value')
>>
>>   <...>
>> }
>>
>
> I was doing it that way but I wasn't aware I could set a default in the 
> hiera call.
> That's a pretty handy trick.
>
> As you can see I didn't use any class parameters, I just put my variable 
>> inside the class and used hiera() funciton to fetch the values from hiera 
>> data. There are couple of things to understand here:
>>
>> 1. syntax of hiera() is: hiera('parameter_to_look_for', 
>> 'default_value_if_not_found')
>> 2. the "parameter_to_look_for" can be anything you like, but the best 
>> practice is to keep it consistent, so for example you have a class 'foo' 
>> and a variable 'myvar' inside the class, then you should have it as 
>> 'foo::myvar' in hiera data files.
>>
>
> Ah very cool.
> That works just as well as the other way.
> I am leaning towards puppet parameter vars in my name::params class 
> because it makes it a bit more portable and will work for those not using 
> hiera yet.
>
> Hope this helps.
>>
>
> Indeed it does.
> Thanks for the explanation.
> (I would have looked up the docs but they don't seem to exist yet) 
>
> Now I have a nice portable way of setting variables and can rewrite all my 
> classes to actually be portable and will me so  much happier releasing them.
>
> One last question.
> I use a node level variable to specify the location of a node.
> I use this for setting variables specific to that location like different 
> puppet master ip and nagios ip for the office and such.
> I want to use that variable in hiera for the same purpose.
> I have this in my hiera.yaml file.
>
> ---
> :hierachy:
>   - %{::clientcert}
>   - %{::environment}
>   - %{location}
>   - virtual_%{::is_virtual}
>   - common
> :backends: yaml
> :yaml:
>   :datadir: /etc/puppet/hieradata
>
> it gets data from the common.yaml file but is seems to not get anything 
> from any of the other files.
> it's definitely using the datadir because thats where the common.yaml file 
> is as well as the rest of the data files.
> Am I missing something?
>
> When you specify variables in hiera.yaml configuration file, then they are 
facts, not actual Puppet variables. So in this case you have it wrong.

Instead of %{::environment}, use %{environment}, because a fact is always 
going to be a top scope variable.

>
> Pete.
>
>
>> --
>>   Vaidas
>>
>> On Tuesday, 4 December 2012 00:00:21 UTC, Pete wrote:
>>>
>>> On 3 December 2012 22:38, Vaidas Jablonskis <jablo...@gmail.com> wrote:
>>>
>>>> Hi Pete,
>>>>
>>>> It depends on what version of puppet you use. If you use 3.x, then it 
>>>> has hiera built-in. So it's very simple to write classes which are 
>>>> compatible with v2.7 or v3.x versions.
>>>>
>>>
>>> I am testing on 3.
>>>
>>> I normally write something like this:
>>>>
>>>> class foo(
>>>>   $parameter = undef,
>>>> ) {...}
>>>>
>>>
>>> Ah nice.
>>> That's pretty logical.
>>> I didn't think of doing that.
>>>
>>> What that means is that puppet will automatically call 
>>>> hiera('foo::parameter') and tries to find a value for $parameter in the 
>>>> hierarchy if it cannot find it, then the value of $parameter will be equal 
>>>> to undef.
>>>>
>>>
>>> Ah I wasn't aware I could define vars like that in Hiera.
>>> Is it as simple putting this in one of my data files?
>>>
>>> foo::parameter: value
>>>
>>>  
>>> Pete
>>>
>>>
>>>
>>>>
>>>> On Monday, 3 December 2012 03:42:08 UTC, Pete wrote:
>>>>>
>>>>> Hi everyone,
>>>>>
>>>>> I currently have a giant file with default variables I use in a lot of 
>>>>> my modules and I override those at the node level if I need to.
>>>>> I thought I would give porting that data into a hiera setup.
>>>>>
>>>>> I worked out how to specify my data sources and started to make a go 
>>>>> at moving some of my variables in the default data file.
>>>>>
>>>>> I thought heira would be smart and set a variable to undef if it 
>>>>> couldn't find it but that doesn't seem to be the case. (unless I missed 
>>>>> something in the rather sparse documentation)
>>>>> Is there a way of telling it to do this?
>>>>>
>>>>> I was also trying to work out how I automagically get my parametized 
>>>>> classed to pull in vars from hiera. (The docs on that don't tell me much 
>>>>> either.)
>>>>> Can anyone tall me how that works? Or do I have to use the hiera 
>>>>> functions which isn't automagical in my book.
>>>>>
>>>>> My current variables are set with a default value in my main file and 
>>>>> then I override those at the node level if I need to (so kind of the same 
>>>>> way hiera does it anyway)
>>>>>
>>>>> So given all of that I can't see any reason to switch to using heira 
>>>>> because my current setup works as-is (my variable file is getting pretty 
>>>>> huge anyway but that isn't going to change with heira if it won't set a 
>>>>> var 
>>>>> to undef).
>>>>>
>>>>> What are the benefits or using an external source for variables 
>>>>> instead of sticking them in my node definitions (which seems like it 
>>>>> would 
>>>>> be faster because it doesn't have to use an external source)?
>>>>>
>>>>> Thanks in advance.
>>>>> Pete.
>>>>>
>>>>  -- 
>>>> 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/-/**PreiZnQjKIcJ<https://groups.google.com/d/msg/puppet-users/-/PreiZnQjKIcJ>
>>>> .
>>>> 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/-/ygahW1cKSLoJ.
>>
>> To post to this group, send email to puppet...@googlegroups.com<javascript:>
>> .
>> To unsubscribe from this group, send email to 
>> puppet-users...@googlegroups.com <javascript:>.
>> 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/-/dni9mA0j2nwJ.
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.

Reply via email to