Re: Puppet can ease system administration tasks across the network
Posted by: Anonymous
on August 12, 2008 01:49 PM
I started out with cfengine because puppet had almost no documentation at the time. Recently I circled back and looked at puppet.
Puppet has a much cleaner syntax than cfengine. In the cfengine world, you have these phases such as "check packages", "check files", and "run these commands". You have to decide which order to do things, and it starts getting to be a pain if you want to have an action in one phase trigger an action in another phase, such as "if I have to install the httpd package make sure it's started in runlevel 3" (last I looked, cfengine didn't have a native command for starting programs, so you have to do it through shell). Puppet on the other hand breaks things down into modules that are divided per application, and has many more commands to handle things that you'd be doing through shell or file editing in cfengine.
There are a few of places where (IMHO) cfengine is much better than puppet. One is in file editing. There are many commands within cfengine to handle operations on files, such as "add this line if it doesn't exist", or "comment out this pattern if you ever see it". In puppet you have to hope that there is a plugin/module to handle the service you're trying to edit, or you have to dive into templating. Secondly, cfengine makes it very easy to classify a server, such as "if you see this file, it's a NIS server, otherwise it's a client" (which lets you alter behaviour later on in the configuration). In puppet you have to write and distribute your own facter recipes or do some other fancy stuff.
Finally, cfengine has some basic monitoring built in, such as letting you run actions based on disk usage or other system metrics. Puppet just doesn't have anything that I could find that could compare.
Despite all that, I'd suggest going with puppet. It will eventually catch up to the features of cfengine. For the things that are really easy in cfengine but more difficult in puppet you'll just learn to adapt because you won't know any better :P