Puppet: System Administration Automated

Puppet vs. BCFG2


This is a post from Luke's old blog; it is saved here statically for historical purposes, as of October 2008

I just came across this post about comparing BCFG2, Puppet, and Cfengine yesterday; the comments all ended about two weeks ago, which is too bad, because I would have liked to comment. Instead, I'm posting this, and I'll send out a trackback or something.

Strangely, the author dismisses Puppet because he can't tell if anyone is using it, yet is very interested in BCFG2 even though there isn't any more evidence anyone is using it. Yes, of course Argonne is using it, since Narayan (BCFG2's author) works there, but it's not clear anyone else is, and cursory examination shows that Red Hat is doing a lot with Puppet, as are a few other organizations. I don't doubt that other people are using BCFG2, but it's still pretty odd to dismiss one tool but not another when they have a very similar track record. Clearly, I need to add a "Clients" page listing the people using it or something.

I think even for normal usability Puppet has quite a bit going for it over BCFG2. First and foremost, BCFG2 uses XML for its input; it almost doesn't matter what Puppet uses in comparison, because it's just about guaranteed to be better. Second, and probably more important, is that BCFG2 seems to only model packages, services, and complete files, while Puppet can model just about anything on your system. I can't tell how BCFG2 manages users or groups, although I assume it must be able to, and it seems that it wouldn't work on OS X because it would have to modify NetInfo databases rather than just generating files. Puppet is very portable -- just implement a different backend for the given type -- and it already runs on FreeBSD, OpenBSD, Debian, Red Hat, OS X, and Solaris.

Actually, it's relatively difficult to tell what BCFG2 can do. I know it can generate files, and that I can write my own generators, and it's pretty clear it can model packages and services, but it's unclear if I can build relationships between files and services (so that services get restarted if files change). This does give me more motivation to start building a Puppet cookbook, so I can talk clearly about all the different, interesting things you can do with Puppet.

Fundamentally, Puppet and BCFG2 are entirely different approaches to a similar problem. I say "similar", rather than "the same", because BCFG2 seems specifically focused only on centralized configuration management, while Puppet is developed to be useful in many different ways, from small one-offs (e.g., creating a user on OS X -- it's a total PITA to do from the console normally, but quite easy with Puppet) to large-scale data center automation. It's even hard to compare them directly, because their approaches are so different.

add to del.icio.us Add to Blinkslist add to furl Digg it add to ma.gnolia Stumble It! add to simpy seed the vine TailRank post to facebook

Tue, 08 Aug 2006 | Tags: ,