Hello folks! Since you cannot include modules twice, or overwrite anything within a namespace, I''m looking for a way to organize my modules. I initially started to create the following structure, which will avoid storing redundant configuration in your manifests: node server01.ono.at { include servergroups::ono::webserver } node server02.ono.at { include servergroups::ono::webserver } node server03.ono.at { include servergroups::ono::webserver } node server04.ono.at { include servergroups::ono::mailserver } class servergroups::ono::server { include puppet::client include ssh::server include exim::minimal } class servergroups::ono::webserver inherits servergroups::ono::server { include apache ... } class servergroups::ono::mailserver inherits servergroups::ono::server { include exim::mx ... } But after having worked with this for a while now and putting more and more configuration into Puppet, I hit the point where all servers would want a certain service configuration (eg. a minimal exim configuration), *except* for one, the mail server, which wants to include a much more complex exim configuration. So I''d like to know how others worked around such limitations, whether there are any functions in Puppet I could use to work around this issue, or which other approaches I could take to reach the same goal - not having to create a second "servergroups::ono::server" class for just one server. -- Stefan Schlesinger ////////////////////////////////////////// /////// sts@ono.at +43.676.4911123 -- 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+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
On Wed, Jun 16, 2010 at 8:56 AM, Stefan Schlesinger <sts@ono.at> wrote:> Hello folks! > > Since you cannot include modules twice, or overwrite anything > within a namespace, I''m looking for a way to organize my modules. > > I initially started to create the following structure, which > will avoid storing redundant configuration in your manifests: > > > node server01.ono.at { include servergroups::ono::webserver } > node server02.ono.at { include servergroups::ono::webserver } > node server03.ono.at { include servergroups::ono::webserver } > node server04.ono.at { include servergroups::ono::mailserver } > > class servergroups::ono::server > { > include puppet::client > include ssh::server > include exim::minimal > } > > class servergroups::ono::webserver inherits servergroups::ono::server > { > include apache > ... > } > > class servergroups::ono::mailserver inherits servergroups::ono::server > { > include exim::mx > ... > } > > But after having worked with this for a while now and putting more and > more configuration into Puppet, I hit the point where all servers would > want a certain service configuration (eg. a minimal exim configuration), > *except* for one, the mail server, which wants to include a much more > complex exim configuration.It looks to me like you should do something like: class exim::complex inherits exim::simple { ... } overriding ::simple resources appropriately and defining any required new resources, and then include exim::complex for that node, and exim::simple for every node?> > So I''d like to know how others worked around such limitations, > whether there are any functions in Puppet I could use to work around > this issue, > > or which other approaches I could take to reach the same goal - not > having to create a second "servergroups::ono::server" class for just > one server. > > > -- > Stefan Schlesinger ////////////////////////////////////////// /////// > sts@ono.at +43.676.4911123 > > -- > 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+unsubscribe@googlegroups.com. > For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en. > >-- nigel -- 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+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Hello, You might consider having an "ono" environment, and "webserver" and "mailserver" modules... Regards, -Roy On 6/16/10 9:56 AM, Stefan Schlesinger wrote:> Hello folks! > > Since you cannot include modules twice, or overwrite anything > within a namespace, I''m looking for a way to organize my modules. > > I initially started to create the following structure, which > will avoid storing redundant configuration in your manifests: > > > node server01.ono.at { include servergroups::ono::webserver } > node server02.ono.at { include servergroups::ono::webserver } > node server03.ono.at { include servergroups::ono::webserver } > node server04.ono.at { include servergroups::ono::mailserver } > > class servergroups::ono::server > { > include puppet::client > include ssh::server > include exim::minimal > } > > class servergroups::ono::webserver inherits servergroups::ono::server > { > include apache > ... > } > > class servergroups::ono::mailserver inherits servergroups::ono::server > { > include exim::mx > ... > } > > But after having worked with this for a while now and putting more and > more configuration into Puppet, I hit the point where all servers would > want a certain service configuration (eg. a minimal exim configuration), > *except* for one, the mail server, which wants to include a much more > complex exim configuration. > > So I''d like to know how others worked around such limitations, > whether there are any functions in Puppet I could use to work around > this issue, > > or which other approaches I could take to reach the same goal - not > having to create a second "servergroups::ono::server" class for just > one server. > > > -- > Stefan Schlesinger ////////////////////////////////////////// /////// > sts@ono.at +43.676.4911123 > >-- 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+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Hello, I like Nigel''s response better - Regards, -Roy On 6/16/10 10:02 AM, Nigel Kersten wrote:> On Wed, Jun 16, 2010 at 8:56 AM, Stefan Schlesinger<sts@ono.at> wrote: > >> Hello folks! >> >> Since you cannot include modules twice, or overwrite anything >> within a namespace, I''m looking for a way to organize my modules. >> >> I initially started to create the following structure, which >> will avoid storing redundant configuration in your manifests: >> >> >> node server01.ono.at { include servergroups::ono::webserver } >> node server02.ono.at { include servergroups::ono::webserver } >> node server03.ono.at { include servergroups::ono::webserver } >> node server04.ono.at { include servergroups::ono::mailserver } >> >> class servergroups::ono::server >> { >> include puppet::client >> include ssh::server >> include exim::minimal >> } >> >> class servergroups::ono::webserver inherits servergroups::ono::server >> { >> include apache >> ... >> } >> >> class servergroups::ono::mailserver inherits servergroups::ono::server >> { >> include exim::mx >> ... >> } >> >> But after having worked with this for a while now and putting more and >> more configuration into Puppet, I hit the point where all servers would >> want a certain service configuration (eg. a minimal exim configuration), >> *except* for one, the mail server, which wants to include a much more >> complex exim configuration. >> > It looks to me like you should do something like: > > class exim::complex inherits exim::simple { ... } > > overriding ::simple resources appropriately and defining any required > new resources, and then include exim::complex for that node, and > exim::simple for every node? > > > > >> So I''d like to know how others worked around such limitations, >> whether there are any functions in Puppet I could use to work around >> this issue, >> >> or which other approaches I could take to reach the same goal - not >> having to create a second "servergroups::ono::server" class for just >> one server. >> >> >> -- >> Stefan Schlesinger ////////////////////////////////////////// /////// >> sts@ono.at +43.676.4911123 >> >> -- >> 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+unsubscribe@googlegroups.com. >> For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en. >> >> >> > > >-- 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+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.