I've [somewhat] recently started developing Puppet modules for use with 
Foreman and have gone through a couple iterations. At first I was 
developing a large, broadly-scoped module for a specific purpose. I soon 
found that in order to provide any amount of customizable behavior I would 
have to provide so many parameters that it was unwieldy.

Therefore, I moved into using much more purpose-specific modules (e.g. 
sshd, aide, chrony, etc). These modules provide a lot of flexibility but 
then you lose the centralized view of the things the configuration items 
for a specific application or workflow require. 

I recently came across some modules on the Forge that got me considering 
using modules with defined types exposing their functionality. I think this 
seems to be the ultimate way to do things because it allows the same 
flexibility as the purpose-specific module setup while essentially 
requiring you to have another module for your application or workflow which 
utilizes the defined types from all of your defined type augmented modules.

However, I would very much prefer an all or none solution. That is I don't 
want to have defined type modules for pieces of a workflow but have to 
directly configure parameters on other modules for other pieces of my 
workflow. Unfortunately, the module availability on the Forge seems to be 
about 50/50 at best (that is maybe half the modules are built with defined 
types). Also, the use of defined types, at least when dealing with config 
files, essentially means using either Augeas or Concat. For complex 
configuration files this can often be quite difficult (which I think is why 
many people default to templates). 

So, in order to use the defined type route it would seem that one needs to 
invest a lot of time in developing custom modules. It seems easier and not 
much worse to just settle for purpose-scecific parameterized modules. This 
has the side effect of giving a better centralized view of all the 
configurations applicable to a given process or library. 

I'm very interested in hearing about other peoples' experiences and 
recommendations. 

On Tuesday, August 23, 2011 at 1:00:04 PM UTC-5, Digant C Kasundra wrote:
>
> Out of curiosity, how are people using parameterized classes in a way that 
> is distinct from defined-types?
>
> -- 
> Digant C Kasundra <[email protected] <javascript:>>
> Infrastructure Systems Software Developer, ITS:IDG, Stanford University
>

-- 
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/a8333100-022b-4d65-806b-6cf028a50a6d%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to