Cfengine is a policy-based configuration management system (Burgess 1995). Its pri-mary function is to provide automated configuration and maintenance of computers, from a policy specification.The cfengine project was started in 1993 as a reaction to the complexity and non-portability of shell scripting for Unix configuration management, and continuestoday. The aim was to absorb frequently used coding paradigms into a declarative, domain-specific language that would offer self-documenting configuration. Cfengine is estimated to run on millions of Unix, MacOSX and Windows computers all around the world. It is used in both large and small companies, as well as inmany universities and governmental institutions. Sites as large as 11,000 machines are reported, while sites of several thousand hosts running under cfengine are common.Cfengine falls into a class of approaches to system administration which is called policy-based configuration management (Sloman and Moffet 1993).
Key Terms in this Chapter
Operators (^O): Or primitive skills are the commands that carry out maintenance checks and repairs. They form the basic sentences of a cfengine program. They describe what is to be constrained.
Cfengine: Refers to a configuration management software agent for autonomic maintenance.
Autonomic: Refers to a self-regulating system.
Convergence: Refers to the property that policy states should be absorbing (i.e., the system only gets closer to the policy state under the action of the agent).
States: Are fuzzy regions within the total system parameter space (i.e., coarse grained observables).
Policy (P): A description of the average, desired host configuration. It comprises a partially ordered list of operations or tasks for an agent to check and a schedule for maintenance.
Classes: A way of slicing up and mapping out the complex environment into discrete set-like regions that can then be referred to by a symbol or name. They are formally constraints on the degrees of freedom available in the system parameter space. They are an integral part of specifying rules. They describe where something is to be constrained. Cfengine classes are not to be thought of in an object-oriented sense.
Configuration Management: Refers to controlling the change of system components throughout their life-cycle, reporting the status, and verifying the completeness and correctness of items.