Thanks for the help all. Maybe I'm approaching this in the wrong way but
the example puts all users on each box. I'm trying to do something like:
users_common = admin1, admin2
server1 = users_common + user1
server2 = users_common
server3 = users_common + user1, user3
The goal is to not have to list the admin users in each host.yaml file, but
include them.
>From what I gather hiera doesn't allow:
sever1.yaml
include users_common
server1_users:
user1:
ensure: present
home: /home/user1
Thanks,
Kent
On Wed, Mar 12, 2014 at 12:38 PM, José Luis Ledesma <
[email protected]> wrote:
>
> El 12/03/2014 17:19, "Jonathan Proulx" <[email protected]> escribió:
>
> >
> > 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)
> >
>
> +1 it should be something like
>
> common.yaml
> users:
>
> user1:
> ensure: present
> home: /home/user1
> ......
>
> server1.yaml
>
> users:
> user3:
> ensure: present
> home: /home/user3
>
> And then
> $users= hiera_hash('users')
> users::admin_homedir_define { $users: }
>
> Note: code not tested
>
> Regards
>
> > 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.
>
> --
> 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/CAF_B3dcgKzCVPdEBSjEQ5y6cMR0soodHcETwJOhZnSdW4QCrNQ%40mail.gmail.com<https://groups.google.com/d/msgid/puppet-users/CAF_B3dcgKzCVPdEBSjEQ5y6cMR0soodHcETwJOhZnSdW4QCrNQ%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>
> For more options, visit https://groups.google.com/d/optout.
>
--
Kent Brede
--
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-n54w0aYaGwt%2BrMj%2BiretvhOv%2BO43q6RGZ4GwCXo_QHg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.