I like the more compact syntax. ^_^ I suppose the other way would be more consistent though.
As far as documentation goes though, hiera_array() is just as undocumented as hiera_include(), which is just as undocumented as the other hiera* functions. http://docs.puppetlabs.com/references/latest/function.html#hiera On Tuesday, December 18, 2012 10:31:55 AM UTC-8, R.I. Pienaar wrote: > > > > ----- Original Message ----- > > From: "Ellison Marks" <gty...@gmail.com <javascript:>> > > To: puppet...@googlegroups.com <javascript:> > > Sent: Tuesday, December 18, 2012 6:28:35 PM > > Subject: Re: [Puppet Users] early clean exit from module? > > > > No, it's additive. It will get all the class names from all hierarchy > > levels that a host maps to. It uses almost the same code as > > hiera_array(), (also undocumented XP, it essentially builds an array > > out of all the elements in the specified variable at all levels of > > the hierarchy matching the host), then just calls include on the > > elements in the resulting list. > > I think it's not documented cos in recent versions of puppet its not > needed > you can do include(hiera_array("classes")) or whatever, older puppet - ie > when hiera was first written - had a bug with array input to the include > function. > > > > > > On Tuesday, December 18, 2012 10:20:21 AM UTC-8, Philip Brown wrote: > > > > > > > > On Tuesday, December 18, 2012 9:33:13 AM UTC-8, Ellison Marks wrote: > > > > You're looking for the hiera_include() function, I believe. It's > > undocumented in the official docs, which is a shame, but I'll try to > > describe it. > > > > Your node definition would look something like this: > > > > node default { > > hiera_include('classes') > > } > > > > This instructs every node to look up the classes variable in hiera. > > It doesn't need to be named classes, but I like that name. This > > variable should evaluate to a list of strings. Each of these strings > > will then be treated as a class name and puppet will attempt to > > 'include' it. You make your hierarchy so that each node gets an > > appropriate list. > > > > > > > > > > Hmm. Thanks for the explanation. It sounds *potentially* useful. > > However, still one problem: > > I dont think it's additive. > > > > In other words, you cant have a truly modular flow in hiera, where > > you have > > the following pseudocode > > > > $(allhosts ) => gets 'classes' list from common.yaml > > > > $(dbmachines) => gets additional classes from dbhosts.yaml > > > > $(webmachines) => gets additional classes from webhosts.yaml > > > > > > If you want a host that is both a db machine, AND a webserver, you > > need to create a new hiera file, > > dbandwebhost.yaml > > and then make sure that all machines in that context, get pointed to > > that specific file, rather than getting to merge things. > > > > > > The only method I see that uses the "pure" hiera_include method you > > show above, and still allows for mix-and-max class includes, would > > be to handcraft individual > > > > FQDN.yaml > > > > files for each and every host. ? > > > > > > > > > > > > > > -- > > 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/-/Vx2_K8OIbREJ . > > 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. > > > > No, it's additive. It will get all the class names from all hierarchy > > levels that a host maps to. It uses almost the same code as > > hiera_array(), > > (also undocumented XP, it essentially builds an array out of all the > > elements in the specified variable at all levels of the hierarchy > > matching > > the host), then just calls include on the elements in the resulting > > list. > > > > On Tuesday, December 18, 2012 10:20:21 AM UTC-8, Philip Brown wrote: > > > > > > > > > > > > On Tuesday, December 18, 2012 9:33:13 AM UTC-8, Ellison Marks > > > wrote: > > >> > > >> You're looking for the hiera_include() function, I believe. It's > > >> undocumented in the official docs, which is a shame, but I'll try > > >> to > > >> describe it. > > >> > > >> Your node definition would look something like this: > > >> > > >> node default { > > >> hiera_include('classes') > > >> } > > >> > > >> This instructs every node to look up the classes variable in > > >> hiera. It > > >> doesn't *need* to be named classes, but I like that name. This > > >> variable > > >> should evaluate to a list of strings. Each of these strings will > > >> then be > > >> treated as a class name and puppet will attempt to 'include' it. > > >> You make > > >> your hierarchy so that each node gets an appropriate list. > > >> > > >> > > >> > > > > > > Hmm. Thanks for the explanation. It sounds *potentially* useful. > > > However, > > > still one problem: > > > I dont think it's additive. > > > > > > In other words, you cant have a truly modular flow in hiera, where > > > you have > > > the following pseudocode > > > > > > $(allhosts ) => gets 'classes' list from common.yaml > > > > > > $(dbmachines) => gets additional classes from dbhosts.yaml > > > > > > $(webmachines) => gets additional classes from webhosts.yaml > > > > > > > > > If you want a host that is both a db machine, AND a webserver, you > > > need to > > > create a new hiera file, > > > dbandwebhost.yaml > > > and then make sure that all machines in that context, get pointed > > > to that > > > specific file, rather than getting to merge things. > > > > > > > > > The only method I see that uses the "pure" hiera_include method you > > > show > > > above, and still allows for mix-and-max class includes, would be to > > > handcraft individual > > > > > > FQDN.yaml > > > > > > files for each and every host. ? > > > > > > > > > > > > > > > > > > > -- > > 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/-/Vx2_K8OIbREJ. > > 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/-/4xffOwEQjwoJ. 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.