Covering all your bases

May 5, 2009 Technical, General

No, this isn’t a pre-baseball game pep-talk. If you use configuration management (and you really, really should) then you will understand the need to manage configuration files. That may seem like a ridiculous statement but configuration files come in many shapes and sizes. What may be simple and consistent to one application author may be strange and erroneous to another.

Thus the lowly sysadmin has the unenviable task of herding this heterogenous group of files into some semblance of order. With Puppet (a great configuration management application that Anchor uses) you have several options:

  • roll out complete static files
  • roll out templates which are filled in with common or possible per-host settings
  • make file edits

The last option is admittedly much more painful than the first two. Even here you have a few options – perform edits with shell commands such as sed, perl, awk etc or create your own custom types to deal with the specific configuration file format in question.

A better alternative is Augeas. This is (depending on how you want to use it) a shell command, or native binding in a number of common languages and allows you (through the various “lenses”) to edit configuration files in a consistent manner no matter what the format of that file is. Since version 0.24.7, Puppet has had support for the Augeas resource type so you can conveniently edit files using Augeas through your existing Puppet manifests.

Line-editing configuration files is not going away anytime soon sadly, so Augeas is a great tool to bridge the gap when complete file roll-outs and templates just can’t do the job you want.