Configuration Management
[ Back to Top ]
One of the plugins that Walrus needs to support is a configuration management system that will enable administrators to manage the configuration of systems. As simple as that description is, this is actually one of the most complex pieces of the puzzle. Doing something wrong in a configuration management system can wipe out infrastructure or otherwise break it in really bad ways.
Tasks
There are several tasks that need to be supported out of the box. Other tasks can be added in additional plugins, but for the base install, we need to support at least the following:
- Copying files
- Configuration files
- Directories of files (i.e. plugins)
- Creating symlinks
- Service management
- Ensure services are enabled/disabled
- Make sure things are running
- Package management
- Install packages
- Look for abnormalities
Behavior
There are various ways this whole thing can be implemented. bcg2 defines the end state and then determines how to get there, whereas cfengine defines flags and actions to take. Given the way most people approach problems, it seems that a mixture of the two is best, drawing more from the cfengine approach.
This pulls the discussion back into the whole "how does one configure Walrus" court again, however. Having administrators write configuration files is probably what they're used to, but is definitely not as friendly as providing a nice user interface. Of course, there are a lot of advantages to configuration files, especially when it comes to interacting with other tools. A robust API, however...
Implementations
At the lowest level, Walrus configuration management allows you to define "checks" that run and "actions" to take. These can be keyed on eachother - checks that cause actions, for example, but they don't have to. You can have actions that run every time the configuration system runs, without any sort of check being done to trigger them.
The configuration management is separate from the check system. Since checks are used by the monitoring system and other things, we get some nice flexibility by not having to do checks ourselves. Of course, some actions might have basic checks built into them, but that should be pretty minor and not very often.
