Post details: Puppet is *not* cfengine rewritten in Ruby

12/19/06

Permalink 08:50:29 pm, Categories: Programming, 410 words  

Puppet is *not* cfengine rewritten in Ruby

Konstantin, your assertion that puppet is a "cfengine lookalike written in Ruby," could not be farther from the truth. There is a long list of reasons why that is not the case; the comparison on the puppet site does a good job at explaining the most important of them.

For me, the most important features of puppet that make it not a cfengine lookalike, and instead a uniquely useful tool, are that

  • configurations can be expressed in a modular fashion, so that you can keep all the bits that make up your webserver config like which packages to install, what config files to put down, which network file systems to mount etc. in one place
  • configuration 'classes' can be modified through subclassing and overriding particular aspects of the base class — this feature is incredibly useful and important since it helps keeping duplication to a minimum. It makes it possible, for example, to take a complicated definition of a webserver and change where one of its config files comes from in a very concise manner
  • vastly different conditions on what config to apply to a host are properly separated in the language — the fact that something should only be done for RHEL3 and Solaris hosts becomes an if statement in the configuration whereas what times these should be applied becomes a schedule
  • the configuration of a client is assembled on the server — the client only gets to see its own configuration, not that of the entire site; that obviously is needed to provide some semblance of security
  • the information about a client that the server uses to assemble the client's config is well-defined in a separate library (facter) and can be easily extended
  • the library of 'native types' that is responsible for dealing with low-level config munging can be extended cleanly, and pretty painlessly even for a Ruby n00b (and this is pretty much the only time where it matters in what language puppet is implemented, plus hacking Ruby is actually fun, though that's clearly a personal preference)

As to whether people should write complex configurations in XML files or not, you're on your own ;) I wouldn't want to do that, though I wouldn't base my choice of tool on file formats alone — more on whether I can understand what I wrote in those files three months from now, which doesn't just depend on format and XML or not, but also on overall organization and clarity.

Comments:

Comment from: Blubb [Visitor]
I'm not sure what you are doing wrong, but your post blocks me from getting the planet fedora feed. To be more specific, I get the following error: XML-Read error Read error: error occurred while parsing reference in line 45, column 94 http://watzmann.net/blog/index.php?title=puppet_is_not_cfengine_rewritten_in_ruby&more=1&c=1&tb=1&pb=1 (column 84 is the "=" after "ruby&more") The link is the one to this blog post - can you please check with the planet fedora guys about that? It happens here with Firefox as well as with Konqueror and Akregator.
Permalink 12/20/06 @ 04:34
Comment from: lutter [Member]
Blubb: the problem is that links to my blog entries contain & in them, which are properly escaped in my rss feed as & - the Planet Fedora aggregator seems to drop that escaping, which makes the whole RSS feed invalid.

I have found a way to have my blog generate entries without &'s in them - hopefully that'll take care of the breakage in Planet Fedora
Permalink 12/20/06 @ 17:36

Comments are closed for this post.

Search

Syndicate this blog XML

What is RSS?

Misc

powered by
b2evolution