On 1/22/2014 7:35 PM, Nathan Nobbe wrote:
I read Craig's article numerous times and have recently published an
article <http://quickshiftin.com/blog/2014/01/composition-in-puppet/> on
my thoughts. To summarize, I feel the big lesson from the article is
composition is needed to define reusable grouped module declarations
(aka /roles/). Whether or not you like the notion of the 2-layered
approach (roles /and/ profiles) is something else and a bit extra IMO.
That said I'm only managing tens of servers rather than hundreds or
thousands so far, but for me one layer to represent 'roles' has worked
great.
What it amounts to for me is a simple guideline - leverage inheritance
(or the hiera hierarchy) as much as possible and introduce composition
on a need-to basis. Composition is necessary though, unless all your
systems are identical.
Thanks again Craig for the article. Neat to find you on the google group!
-nathan
If I had the 20-30 hours to write a Puppet Conf presentation it would
be called "The profile is the most important part of role/profile." :-)
In a simple system with a webserver and database, profiles don't appear
to add much. However in a complex system where an Apache server could be
a proxy, app server, ssl terminator, or other function the added layer
is very necessary. In my system I have 25+ roles half of which use
profile::apache to get vastly different configs. In each case
profile::apache provides the entry point for the data Hiera provides
based on Role.
Profile classes are where you get to be opinionated about your config.
In my sample profile::apache class below my Apache module can remain
generic and shareable while profile::apache pulls in things like
collectd, logstash, etc that are specific to how *I* think any server
with Apache should be installed.
You might also check out Craig's later presentation on role profile
which provides a clearer picture than his earlier blog post.
http://www.slideshare.net/PuppetLabs/roles-talk
Ramin
class profile::apache {
include ::apache
include profile::logstash
include profile::sslcerts
collectd::plugin { 'apache': }
logrotate::simple { 'apache':}
$mymods = hiera('apache::a2mods', {})
create_resources('apache::a2mod', $mymods)
$myvhosts = hiera('apache::vhosts', {})
create_resources('apache::vhost', $myvhosts)
Sslcerts::Cert<||> -> Class['apache::service']
}
--
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/52E188C8.5020807%40badapple.net.
For more options, visit https://groups.google.com/groups/opt_out.