Mark,
Thanks for the quick reply.
"This uses the auto lookup of parameters. It will perform a hiera search
for 'classB::param1'." --> Auto lookup feature what you mentioned is in PE
2.7? I remember reading as 3.0 feature.
Regards
Sai.
EMC
On Thursday, February 21, 2013 2:32:10 PM UTC-5, Ellison Marks wrote:
> quick definitions first:
>
> hiera() gets a value from the backend. stops searching after it finds a
> value. the value can be any data type.
> hiera_array() gets multiple values from the backend, combining them into
> one large array as possible.
> hiera_hash() gets multiple values from the backend, combining them into
> one large hash as possible.
> hiera_include() calls hiera_array() and then includes each classname
> returned.
>
> Ok, so hiera_include will look in the backend for a variable named in the
> call, in your case 'classesA'. this should contain an array of class names
> to include. As your hierarchy apparently doesn't contain the variable
> 'classesA', this explains the second error you are getting. You also didn't
> include the variable 'classesH' in nodeA.yaml, so that might be the cause
> of the failure there. create_resources is also not used on classes, just
> types or defines. Generally, for hiera_include, it should look sort of like
> this.
>
> class classA {
> notice("ClassA")
> }
>
> class classB ($param1 = '') { #This uses the auto lookup of parameters. It
> will perform a hiera search for 'classB::param1'.
> notice ("ClassB: ParamValue $param1")
> }
>
>
> NodeA.yaml
> ---
> classes:
> - a
>
> NodeB.yaml
> ---
> classes:
> - b
>
> 'classB::param1': 'Puppet-Hiera'
>
> node default {
> hiera_include('classes', []) #empty array, not empty string, which
> might also have been messing things up.
>
> }
> }
>
>
> On Thursday, February 21, 2013 10:55:59 AM UTC-8, Sai_Emc wrote:
>>
>> I am looking for few clarifications on puppet-hiera integration.
>>
>> Trying to move away completly from using site.pp. For that I started
>> exploring Hiera. End of the day I want an external system prepare yaml
>> files automatucally based on user requests.
>>
>> Environment: Ubuntu12.04, PE 2.7, Hiera 1.1.2
>>
>> EX:
>> class classA {
>> notice("ClassA")
>> }
>>
>> class classB ($param1 = '') {
>> notice ("ClassB: ParamValue $param1")
>> }
>>
>>
>> Now I am want to include these two classes into two different nodes, so
>> prepared two yaml files
>>
>> hiera.yaml
>> ---
>> :hierarchy:
>> - %{::clientcert}
>> - common
>> :backends:
>> - yaml
>> :yaml:
>> :datadir: '/etc/puppetlabs/puppet/hieradata'
>>
>> NodeA.yaml
>> ---
>> emcutil::a:
>> - a
>>
>> NodeB.yaml
>> ---
>> classesH:
>> emcutil::b:
>> param1: 'Puppet-Hiera'
>>
>>
>> As I have classes as array and hash, so added below code in site.pp
>> default section so that I can include hash and arrays.
>>
>> node default {
>> hiera_include('classesA','')
>> $param_packagesH = hiera_hash('classesH')
>> create_resources('class',$param_classesH)
>> }
>> }
>>
>> This approach does not work.
>>
>> On NodeA following error:
>> err: Could not retrieve catalog from remote server: Error 400 on SERVER:
>> undefined method `empty?' for nil:NilClass at
>> /etc/puppetlabs/puppet/environments/development/manifests/site.pp:48 on node
>> On NodeB following error:
>> err: Could not retrieve catalog from remote server: Error 400 on SERVER:
>> Could not find data item classesA in any Hiera data file and no default
>> supplied at
>> /etc/puppetlabs/puppet/environments/development/manifests/site.pp:46 on node
>>
>> What I am doing here is valid?
>> If we are using hiera_include or hiera_hash all the node yaml files
>> should have all the targets and the target returns not null values?
>> Do we have alternatives other than using hiera, hiera_include and
>> hiera_hash?
>> PE 2.7 do we need to do any configuration for Hiera, apart from
>> puppet-hiera package. Specifically related to these two attributes
>> node_terminus, external_nodes?
>> With Hiera we can move away from site.pp completly. My understanding is
>> correct on Hiera?
>>
>> Any help on this greatly appreciated.
>>
>> Sai.
>> EMC Corporation.
>>
>>
>>
>
--
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 post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/puppet-users?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.