|Developer(s)||Narayan Desai et al.|
|Stable release||1.3.5 / 5 September 2014|
|Type||Configuration management, System administration, Network management|
Bcfg2 (pronounced "bee-config") is a configuration management tool developed in the Mathematics and Computer Science Division of Argonne National Laboratory. Bcfg2 aids in the infrastructure management lifecycle – conﬁguration analysis, service deployment, and conﬁguration auditing. It includes tools for visualizing conﬁguration information, as well as reporting tools that help administrators understand conﬁguration patterns in their environments.
Bcfg2 differs from similar configuration management tools due to its auditing capability. One of the stated design goals for Bcfg2 is to determine if interactive (direct) changes have been made to a machine and report on these extra changes. The client can optionally remove any additional configuration.
Bcfg2 is written in Python and enables system administrator to manage the configuration of a large number of computers using a central configuration model. Bcfg2 operates using a simple model of system conﬁguration, modeling intuitive items like packages, services and conﬁguration ﬁles (as well as the dependencies between them). This model of system conﬁguration is used for veriﬁcation and validation, allowing robust auditing of deployed systems. The Bcfg2 configuration specification is written using a declarative XML model. The entire specification can be validated using widely available XML schema validators along with the custom schemas included in Bcfg2.
Bcfg2 is based on a client-server architecture. The client is responsible for interpreting (but not processing) the configuration served by the server. This configuration is literal, so no client-side processing of the configuration is required. After completion of the configuration process, the client uploads a set of statistics to the server.
The Bcfg2 Client
The Bcfg2 client performs all client configuration or reconfiguration operations. It renders a declarative configuration specification, provided by the Bcfg2 server, into a set of configuration operations which will attempt to change the client's state into that described by the configuration specification.
The operation of the Bcfg2 client is intended to be as simple as possible. Conceptually, the sole purpose of the client is to reconcile the differences between the current client state and the state described in the specification received from the Bcfg2 server.
The Bcfg2 Server
The Bcfg2 server is responsible for taking a network description and turning it into a series of configuration specifications for particular clients. It also manages probed data and tracks statistics for clients.
The Bcfg2 server takes information from two sources when generating client configuration specifications. The first is a pool of metadata that describes clients as members of an aspect-based classing system. That is, clients are defined in terms of aspects of their abstract behavior. The other is a file system repository that contains mappings from metadata to literal configuration. These are combined to form the literal configuration specifications for clients.
An example of abstract configuration entries:
<Package name="openssh-server"/> <Path name="/etc/motd"/>
An example of literal configuration entries:
<Package name="openssh-server" version="auto" type="deb"/> <Path name="/etc/motd">Hello from Bcfg2 </Path>
- solj (2013-01-29). "Bcfg2 releases download". Bcfg2. Retrieved 2014-02-26.
- Bcfg2. "bcfg2/LICENSE at master · Bcfg2/bcfg2 · GitHub". Github.com. Retrieved 2014-02-26.
- "Bcfg2 Architecture Goals". Bcfg2. Retrieved 16 December 2014.
- "Bcfg2 | Sysconfigtools". Retrieved 2011-07-30.
- Desai, Narayan. "What Operating Systems Does Bcfg2 Support?". Bcfg2 Development Team. Retrieved 2013-02-26.
- Narayan Desai; Cory Lueninghoener (10 November 2008). Configuration Management with Bcfg2 (USENIX Short Topics in System Administration, #19) [Paperback]. USENIX Association. ISBN 978-1-931-97164-5.