see http://docs.puppetlabs.com/hiera/1/puppet.html
"If you need to merge arrays or merge hashes from multiple hierarchy
levels, you will have to use the hiera_array or hiera_hash functions
in the body of your classes."
There's not really a good example in that page, but essentially where
'hiera' takes the most specific patch hiera_array and heira_hash
collect all the values across all matching hierarchies (though you
needn't define the key in every level)
we use this for packages to install:
$basepackages = hiera_array('basepackages')
ensure_packages($basepackages)
Then in hiera be define (or not) arrays of packages by os version, role, etc...
-Jon
On Wed, Mar 12, 2014 at 12:11 PM, Kenton Brede <[email protected]> wrote:
> I'm in the process of moving to Puppet 3 and hiera.
>
> With my old setup I placed users that were on all servers in basenode. Then
> did a += for any additional users in the node definition.
>
> node basenode {
> users = ['user1', 'user2']
> }
>
> node server.example.com inherits basenode {
> users += ['user3']
> # or simple exclude the line, if there were no additional users
> }
>
> With the new setup I've got a common.yaml that contains a hash of users with
> access to all boxes. Then I thought I'd place additional users for
> "server1" in server1.yaml.
>
> common.yaml
> users_common:
> user1:
> ensure: present
> home: /home/user1
> ......
>
> server1.yaml
> server1_users:
> user3:
> ensure: present
> home: /home/user3
> ......
>
> Then I call like this, which just pulls the usernames from the hash and
> creates home directories with a file type:
>
> class users::ldap {
> # regular users
> $users_common = hiera('users_common')
> $users_common_keys = keys($users_common)
> $users_hosts = hiera("${::hostname}_users")
> $users_hosts_keys = keys($users_hosts)
> $adusers_combined = flatten([ $users_common_keys, $users_hosts_keys ])
>
> # create ldap user home directories
> users::admin_homedir_define { $adusers_combined: }
> }
>
> Works great until there are no users for "${::hostname}_users."
>
> How can I make this work when "${::hostname}_users" is empty?
> Thanks,
>
> --
> Kent
>
>
>
>
> --
> 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/CA%2BnSE3-%3D9zQvajiNMt9e%2BOA64fHrYwPkk4WEwhm0JBPHN598PA%40mail.gmail.com.
> For more options, visit https://groups.google.com/d/optout.
--
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/CABZB-sgYSky1BzZ6Vf1OHuYonAhLh-gKV%2BN_RmiQreRyWbVk_w%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.