While _most_ things I want to manage via Puppet have modules on the forge 
that are well maintained, tested and highly flexible.  Sometimes though, I 
find that there is something that my organizations uses that is just not 
common enough to have a module on the forge.

In roles/profiles we consider things to be layered, with Roles at the top 
and technology specific modules at the bottom.  Profiles are our place to 
control the behavior of technology specific modules and add any missing 
functionality or business logic.

How do you deal with technologies that do not have corresponding modules on 
the forge?

*A) Write technology module and profile?*
Pros:
 - follows established practice
 - most flexible
Cons:
 - extra work
 - possible duplication of effort

class foo ($param1, $param2, ... $paramN) {
  contain foo::install
  contain foo::config
  contain foo::service
  Class['foo::install'] -> Class['foo::config'] -> Class['foo::service']
 }


class profile::foo ($param1 = 'my_default', $param2 = 'other_default', ... 
$paramN) {
  foo {
    param1 => $param1,
    param2 => $param2,
    ...
    paramN = $paramN,
  }
}


*B) Put it all in a profile?*
Pros:
 - less work
 - probably still flexible since you control the whole thing
Cons:
 - does not match established practices

class profile::foo ($param1 = 'my_default', $param2 = 'other_default', ... 
$paramN) {
  contain profile::foo::install
  contain profile::foo::config
  contain profile::foo::service
  Class['profile::foo::install'] -> Class['profile::foo::config'] -> Class[
'profile::foo::service']
}



How have you handled this scenario in the past?

Thank you,
-Alan

-- 
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 view this discussion on the web visit 
https://groups.google.com/d/msgid/puppet-users/4e5e1a58-4d1e-4700-b3db-fd242567488bo%40googlegroups.com.

Reply via email to