FAQ
That's ok Mark. I kind of remember that from documentation.

When we use above approach puppet need to make multiple hiera() calls to
get resources specific to a class.

I mean a class with say 4 arguments, puppet need to make a multiple calls
to get all the parameters.

NodeB.yaml
---
classes:
- b

'classB::param1': 'Puppet-Hiera'
'classB::param2': 'Puppet-Hiera'
'classB::param3': 'Puppet-Hiera'
'classB::param4': 'Puppet-Hiera'

If we have thousands of nodes we might see any performance issues with
array approach? I might be totally wrong on this.

The same if I have declared as Hash then from puppet that is just one call,
but it might look all defined hierarchies. So if we do use hiera_hash then
without using create_resources() is there any other method I can include
class definitions.

Thank you.

Regards
Sai.
EMC
On Thursday, February 21, 2013 3:01:54 PM UTC-5, Ellison Marks wrote:

Ah, sorry, my mistake, mised the version. That line would have to be

class classB ($param1 = hiera('classB::param1', '')) {

with the hiera call in the definition. Sorry about that :P
On Thursday, February 21, 2013 11:57:24 AM UTC-8, Sai_Emc wrote:

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 puppet-users+unsubscribe@googlegroups.com.
To post to this group, send email to puppet-users@googlegroups.com.
Visit this group at http://groups.google.com/group/puppet-users?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.

Search Discussions

Discussion Posts

Previous

Follow ups

Related Discussions

Discussion Navigation
viewthread | post
posts ‹ prev | 5 of 8 | next ›
Discussion Overview
grouppuppet-users @
categoriespuppet
postedFeb 21, '13 at 7:04p
activeFeb 22, '13 at 8:12p
posts8
users2
websitepuppetlabs.com

2 users in discussion

Sai_Emc: 5 posts Ellison Marks: 3 posts

People

Translate

site design / logo © 2022 Grokbase