You do not have permission to delete messages in this group
Copy link
Report message
Show original message
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to puppet...@googlegroups.com
I'm fairly new to puppet, and I've been tasked with building manifests to deploy software, mostly monitoring agents. Each agent has different versions, and each agent has different package for each OS. I'm trying to figure out which would be the best way to accomplish this from a design perspective. Right now, everything has it's own module (OS/Agent/Version). However, I'm not sure this is the best way and I'm looking for opinions from others.
Some ideas I've had (and I'm not sure some of this is even possible, let alone a good idea):
Module for each agent/OS, different versions contained in the module
i.e
Agent1_linux
Agent1_windows
Agent2_linux
Agent2_windows
(each module's init.pp has different version "classes" or something similar)
Modules for each agent version, OSes combined in the module
Agent1_v1
Agent1_v2
Agent2_v1
Agent2_v2
(each modules init.pp has different code for the different OSes)
Combining the two ideas, one module for each agent
Agent1
Agent2
(each modules init.pp has different code for OS and versions).
Ideas? Suggestions? Theories? Thanks for any/all input. Keep in mind I'm new to this product, so I might not be making absolute sense.
Felix Frank
unread,
Apr 16, 2014, 8:53:23 AM4/16/14
Reply to author
Sign in to reply to author
Forward
Sign in to forward
Delete
You do not have permission to delete messages in this group
Copy link
Report message
Show original message
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to puppet...@googlegroups.com
Hi,
and welcome aboard! :)
In the rare case where Linux and Windows will have use for the same
modules (I can hardly think of any, barring perhaps nagios, but even
there I prefer NSCA on Windows vs. NRPE on Linux), I would still
hesitate before creating "two worlds".
Each module should be self contained and do its job. Use fact values to
make decisions and branch out of things that won't work on certain
platforms or are just generally different.
I suppose that for Windows, lots of things will be much different from
*NIX. Still, that would basically mean that certain (or most) classes in
the modules are wrappers of the form (untested example):
class my_feature {
case $operatingsystem {
'Windows': { include my_feature::windows }
... # other special cases?
default: { include my_feature::linux }
}
}