Hi,

I'm new to Puppet, and I'm trying to wrap my head around how I should organize things. It seems pretty clear that the intent is to organize things around functional facilities, like ntp, printing, name resolution, etc. But my original inclination was to organize things more organizationally for instance, common configs, mac configs, linux configs, etc.

But it seems that it doesn't make much sense to have a module called "common" because it wouldn't really do anything except contain other modules. And after reading the best practices, it looks like maybe the templates.pp is the place to sort of group things in this way.

On the other hand, I'm not loving the functional organization, because (for example) mail configs for a mac have absolutely nothing in common with mail configs for a linux system. I know I could have one piece of code that says "if this is a mac, change these files, if it's linux, change these instead". And I see the advantage in doing that in terms of being able to parameterize the few bits that actually are in common, like the name of our smtp server.

But to me it feels like it would be better to have separate code for mac and linux, partly because they share so little code. And partly because two different people are responsible for these two platforms, and shouldn't be stepping on each others toes. And to extend that thought it would be nice if a mistake screwed up only one platform instead of all platforms. And this is made more confusing by the fact that this is true only for some functional units; other things would be similar or identical across platforms.

So do I shut up and write modules that handle multiple platforms? Or is there a way to get both functional and organizational separation at the same time and have the best of both worlds? It has occurred to me that I could have (for example) an emailclient module, and then have emailclient::darwin etc. and have emailclient include the appropriate module subclass... but this makes me wonder if I'm misunderstanding the point here as it seems like I'm calling an extension of a class from the class itself which seems recursive or incorrect somehow.

Sorry for the long-winded explanation of my confusion. Any help is appreciated.

    tom

--
You received this message because you are subscribed to the Google Groups "Puppet 
Users" group.
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.

Reply via email to