I’ve started working on a new project called StateEngine. This is a distributed system to manage state on RPM style Linuxes. The idea is to be what cfengine is to managing config files to managing state. For example, you assign the “NFSServer” keyword to a workstation that workstation becomes an NFS server, or NIS server, or whatever.
The code works based off of Actions on the client side and State Objects on the server side. The Actions that live on the client are a collection of generic and very simple commands. Such as install file, change permissions, create directory, etc. Actions are designed so that they rarely need changing, this keeps up from constantly having to update the source code on the client.
The server has a collection of State Objects which can be maintained by the site administrator. These objects define how to create the required state on the client. A queue of Actions is generated and stored for later spooling to the proper clients.
If folks are interested you can browse through the source by going to http://current.tigris.org, then click on the subversion link to browse the source. You’ll find StateEngine under the branches/ directory. Whether these two projects should eventually become one is another interesting question that I’ll come to one of these days.