Hi Folks,

Like to get some advice on module organization.  I have a system that has a 
few different components.  One or more components can be installed on a 
host.  The hosts also have a "type" dimension.  This "type" dimension could 
(should) ideally be used to configure the system (fill in a bunch of 
variables).  Problem is, I'm not sure how the best way to do this in puppet.

I'm running puppet 2.7x.

To illustrate, I'd like to do something like this (pseudo syntax):

node 'foo.example.com' {
    include module::component("systemType" => "foobar")
    include module::component2("systemType" => "foobar")
}

node 'foo2.example.com' {
    include module::component("systemType" => "foobar2")
    include module::component3("systemType" => "foobar2")
}

or, maybe even better

node 'foo.example.com' {
    include module(components => [component1,component2], "systemType" => 
"foobar")
}

node 'foo2.example.com' {
    include module(components => [component1,component3], "systemType" => 
"foobar2")
}

In the above illustration, the value of componentType can determine which 
files to load, as well as a bunch of variables (40-60 variables) which 
would be used for things like ensuring directories are present, ownership, 
users installed, etc..

I was thinking that each component would be a class, which is fine in 
itself, but my real problem is the movement of these variables 
(configuration).  There are a lot of components, and enough variables that 
I don't want to add them to each class.  I want to be able to do something 
like:

class mymodule(components, componentType) {
    $myconfig = getConfig($componentType)
    # can I "loop" through components?
    include mymodule::component($myconfig)
}

Hopefully that's descriptive enough.  Feel free to ask questions.   
Ultimately, my major goal is to boil the configuration down to a single 
location, as the configurations (systemTypes).  Some like this would work 
(I think) if calling the class could be dynamic:
http://docs.puppetlabs.com/guides/parameterized_classes.html#appendix-smart-parameter-defaults

Thanks in advance for the feedback,

Tom

-- 
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 puppet-users+unsubscr...@googlegroups.com.
To post to this group, send email to puppet-users@googlegroups.com.
Visit this group at http://groups.google.com/group/puppet-users?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to