[CentOS] Configuration Management Redux (was: best parallel / cluster SSH)

Thu Feb 4 20:21:55 UTC 2010
Les Mikesell <lesmikesell at gmail.com>

On 2/4/2010 1:28 PM, Alan McKay wrote:
> On Thu, Feb 4, 2010 at 2:03 PM, Les Mikesell<lesmikesell at gmail.com>  wrote:
>> But, if someone ever gets cross-platform config management right or at
>> least close enough that it is worth learning yet another description
>> language I'd be very interested.  Cfengine v3 might be getting there but
>> the windows version seems to be only available in the commercial build.
>
> OK, this is the perfect sequay for me :-)
>
> Assuming you only want Linux, and at that CentOS Linux - which are
> both the case for me - what Config Management system would you use?
> What is out there?
>
> A few months ago I sort of had a similar thread going and got the following :
>
>
> Slackmaster - looks like this is from google
>
> chef - have not looked it up yet
>
> puppet - got a test bed going and just bought the book because have
> not found much on line in terms of complex configs and how to actually
> use it to manage your environments
>
> bcfg2 - have not looked for it yet
>
> CF Engine - am vaguely familiar with it.

Well so far I haven't adopted any, mostly because learning their oddball 
languages seems like extra work with no return over using simple loops 
to automate what you have to know anyway.  That is, you have to 
completely understand what they do and how they do it to supply the low 
level scripts for the specific things you want to happen, and once you 
have that part there's next to nothing involved in wrapping it with ssh 
from a central point yourself using the shell language which is well 
designed for that sort of thing and you already have to know it.

Also, you almost certainly will want to version-control things, so 
unless the tool you pick starts with your favorite mechanism underneath 
you'll have more complications than just tossing svn commit/update 
commands in appropriate places yourself.  In my opinion, the version 
control is the important part while copying things around and executing 
a command here and there are fairly trivial.  I'd like to find something 
that starts with the premise that for each group of hosts you have a 
'master' set of configs and every actual instance is a 
version-controlled branch where you could easily compare any host:host 
in the set as well as host:different time (stuff any version control 
tool does).  But so far I haven't seen anything that understands that 
the configurations are just extensions of the programming and need to be 
handled the same way as the underlying source code for the same reasons.

For your 4-host example, I'd be tempted to just open 4 terminal windows, 
ssh to each, and after running a command successfully in one, recall the 
command line with the up arrow, highlight it with the mouse and 
middle-click in each of the other windows.  You get verification that 
the command is correct before killing all of the servers, then nearly 
parallel execution on the others in much less time than it would take 
you to figure out how to tell some framework to do it for you.  And if 
you are as lazy as I am, you can run the control desktop in freenx, and 
leave the ssh session windows open, then grab the whole desktop remotely 
whenever you need it again.

If I were willing to be restricted to a few unix-like OS varieties, I'd 
look at puppet.  Cfengine before v3 was just too weird, but it seems to 
have a new philosophy now.  I'm still reading the blurbs, though.

-- 
   Les Mikesell
     lesmikesell at gmail.com