This last week I spent all effort into learning Puppet. Now I suffer from a mental buffer overflow and little confidence of ever being able to tame this beast. I came across many annotated examples but due to their countless variations I fail to discern between recommended (recent) Puppet style and conventions, and ad hoc "works for me" approaches. I can't stand it because it seems to be about basic level stuff.
So. Using Puppet to manage groups and users, users' primary group equal to their own username, other groups could be
lan for lan logins,
wheel for admins,
shell for users with a shell on arbitrary nodes,
daemons for various daemons. Admin logins will be on all nodes and to make things worse a lan login could be a shell login too.
From what I understand it's okay to define a user multiple times if you make use of virtual definitions that are realised at some point. Sounds fab, so how does that work with multiple groups for a user? Say Bob can use both LAN nodes and node beastie.wan; is his login
thebob then defined two times, in lanusers.pp with
groups => ["lan"] and in shellusers.pp with
groups => ["shell"]? What if Bob wants his lan password to be separate from his shell password?
The code I currently use has no virtual definitions, users are just hard coded single inclusions. At one point I came across an example using virtuals and this is where I got stuck because I don't understand how to expand the code so that Puppet creates a primary group and the required groups I defined first and then joins the user in those groups.
Right. Please cluebat me properly.