Config4GNU: WBEM Initiative

Home | Prerequisites | Download | Screenshots

Home

Config4GNU is an open source project that attempts to deal with configuration on Linux/Unix operating systems running GNU software. The project has developed a multilayered architecture that allows for multiple front-ends and back-ends using XML to communicate. The project developed backends for several types of configuration files, including INI-style and Apache-style, as well as a Gtk frontend written in C++ and a web-based frontend written in PHP.

The WBEM Initiative is a separate project under the same name, but it seeks to solve the same set of problems. Instead of exposing configuration information through XML, it uses the standards developed and embraced by DMTF's Web-Based Enterprise Management (WBEM) Initiative.

Contents

  1. About WBEM
  2. WBEM and Configuration
  3. The SBLIM Project
  4. Config4GNU's WBEM Providers
  5. Config4GNU's CIM Browser
  6. Compiling/Installing
  7. Using CIMBrowser

About WBEM

The WBEM Initiative includes a data model, an encoding specification, and a transport mechanism. The data model used by WBEM is the Common Information Model (CIM). CIM is composed of a specification and a schema. The specification is a language and methodology for describing all sorts of management data. The schema includes generic models for Systems, Applications, Networks and Devices.

At the WBEM Initiative site you can download all of the various standards that make up WBEM.

WBEM implementations use a client-server architecture. The server is called the CIM Object Manager (CIMOM). It serves as a repository for the CIM schema and user-defined management objects. It also allows plugins to act as "providers" for certain classes. For example, there could be a plugin that provides management data about all the network interfaces available on a Linux system.

A WBEM client uses the encoding specification and transport mechanism defined by the WBEM initiative to talk to the CIMOM. Through operations such as "enumerate instances" and "modify instance", a WBEM browser can be used to browse through the objects in the repository and the objects made available by "providers." Or, a WBEM client can be constructed for a specific purpose, such as setting the properties on a network card.

WBEM and Configuration

The Config4GNU WBEM Initiative is interested in making configuration data accessable through WBEM. There are three steps to make this work: modeling, writing providers and writing front-ends.

Modeling involves looking at how information is presently encoded in the native, text-based configuration files and figuring out how it can be expressed using the CIM data model. Expressing it in the CIM data model is usually done by taking an existing class and adding new properties, methods and/or associations to it. It is advantageous to find an existing generic class to extend because then WBEM clients that already know about the generic class can provide functionality to your class.

Here is an example of modeling a Samba share (written in MOF syntax as described in the CIM specification, with qualifiers left out):

class Config4GNU_SambaShare : CIM_Share
{
  string Path;
  string Comment;
  boolean Browseable;
  boolean Writeable;
  boolean GuestOK;
};
In this case, the new class describing a Samba share object is extending the CIM-defined generic CIM_Share class. The new class also lists some additional properties not defined by the CIM_Share class. By extending the generic CIM_Share class, this new class can be manipulated by clients that are designed to handle CIM_Share classes, even though they know nothing about Samba.

Viktor Mihajlovski at IBM wrote an article about using CIM to model configuration data, and talked specifically about Apache. The article is called Managing Application Configuration Data with CIM [PDF].

The SBLIM Project

The Standards Based Linux Instrumentation for Manageability (SBLIM) "is an IBM Open Source project, intended to embrace the manageability of GNU/Linux systems" (SBLIM Project Web Site). SBLIM was a source of inspiration for Config4GNU WBEM Initiative. The SBLIM project is focused on enabling GNU/Linux for WBEM. It is mainly focused on modeling management data in CIM and writing providers. Unlike Config4GNU it is not limited to just configuration. It also includes hardware and run-time information.

The SBLIM project has written a number of providers, including providers for Runlevel services, RPMs, Filesystems, and Cyrus Mail Server.

Of interest is the work they did writing a standard provider interface to interact with CIMOMs. Without this standard interface, providers are written for a specific CIMOM implementation. With this interface, providers can be written without knowing what CIMOM implementation will be used.

CIMOM Implementations

While on the topic of CIMOM implementations, there are several to choose from. Here is an incomplete list of CIMOM implementations and the programming languages they are written in:

So far I have only used OpenWBEM.

Config4GNU's WBEM Providers

Config4GNU deals with configuration files using the Perl programming language. It wasn't until I discovered that OpenWBEM included a Perl provider interface that I really got interested in using WBEM for configuration. All Config4GNU providers written so far use Perl.

Unfortunately, the Perl interface is not very developed yet. It doesn't do much more than expose the API. In other words, all the functions you need to use are there, but it doesn't use Perl's object-oriented abilities, or Perl's lists or hashes.

Because of this, I wrote a Perl module to help deal with these shortcomings. It's called Config4GNU::WBEM.

Included in the Config4GNU-WBEM tarball are providers for Samba and Nagios, as well as the Config4GNU::WBEM Perl module. See below for information about installing these providers.

Config4GNU's CIM Browser

I had difficulty getting some of the existing WBEM clients to talk to the OpenWBEM CIMOM (which means I should've probably tried a different CIMOM), so I started work on a WBEM browsing application called CIMBrowser. CIMBrowser lets you connect to a CIMOM, browse the CIM schema, and to a limited extent browse and view CIM objects.

View some screenshots of CIMBrowser.

Compiling/Installing

Check out the Prerequisites and Download pages for instructions on compiling and installing both Config4GNU's dependencies and the Config4GNU programs.

Using CIMBrowser

TODO. (Some information can be gleaned by reading the comments in the screenshots sections.)

Last updated: 2004-02-04