Thank you to both of you for your good advice! :)
On Thursday, January 2, 2014 9:49:30 AM UTC-8, Ramin K wrote:
On 1/2/2014 6:47 AM, Jeff Bachtel wrote:
On 01/01/2014 08:38 PM, mjus...@gmail.com <javascript:> wrote:
Hi all,

I have a role/profile setup that's working quite well. However, I'm
finding that there are *super* simple things that don't really require
the setup of their own module, such as installing "nano" or setting up
a yumrepo {}. Do I really need an MOTD module? I have a
profile::base class which includes things like ::ntp, which because
it's a daemon and requires monitoring/service statements, etc. makes
sense to keep separate. But do I really need a yum module when I'm
just calling yumrepo{} or package{} that install a few .rpm files? And
for installing general, un-managed packages like bash, nano, etc.,
surely I shouldn't create a component/module for each of those? I
think that'd be overkill.

I've thought about doing a few things. Perhaps creating a "general"
class that includes subclasses, like so:

include general::yum
include general::motd

Alternatively, inside the puppet "base" profile, I can have the
include ::ntp statements, and then also add some package{} and
yumrepo{} statements... but not sure if that's anti role/profile.
According to Craig Dunn's original blog post on the role/profile model,
yes you should be defining modules for motd/yum repos and whatnot. I've
seen that implemented most often under the ::site namespace, but
::general would work as well. And really, it's for the best if no one
working with your code base has to worry about a ::profile class
defining non-class resources directly. And the time overhead of writing
"class site::motd { (blah blah)" is only marginally more than writing it
directly in the profile class.

No one's going to call the Puppet police if you put a yumrepo{} in a
profile class, or create a ::site class that opaquely creates a motd,
sets yumrepo, and installs nano. Eventually you might regret it and
break things out more properly, but "eventually" can be pretty far in
the future. But the level of effort to create a bunch of tiny ::general
classes for piddly stuff is really pretty small, too.

I nearly lost a keyboard to coffee and "the Puppet police" this morning.
Nice job. :-)

I agree with Jeff that whatever works for you is fine. If it makes
most sense now, you should write it, push it, and move on to getting
more work done. You may change your mind later and refactor, but that's
a fact of life in any living code base.

However I believe there are some organizational benefits to one
being the least amount of code. This keeps the module(one use) ->
profile(many modules) -> role(many profiles) relationship intact. It
should also make your code easier to read and reason about.
Simpler modules will keep you from mixing logic between uses. If
motd is seperate from module yum you're unlikely to create accidental
dependencies. Admittedly I can't think of any way deps could be created
between those two examples.
The other advantage of individual modules is that they are easier
extend. Your yum module today might be just repos, but tomorrow it might
install assorted yum-* plugins, need to makecache, etc.

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+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/puppet-users/705d8813-80cd-49df-ae18-f00bdcbe45d9%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Search Discussions

Discussion Posts


Related Discussions

Discussion Navigation
viewthread | post
posts ‹ prev | 6 of 6 | next ›
Discussion Overview
grouppuppet-users @
postedJan 2, '14 at 1:38a
activeJan 3, '14 at 10:03p



site design / logo © 2022 Grokbase