### ### Copyright 2000-2007 University of Illinois Board of Trustees ### All rights reserved. ### ### psgconf-intro - introduction to psgconf ### ### Campus Information Technologies and Educational Services ### University of Illinois at Urbana-Champaign ### =head1 NAME psgconf-intro - introduction to psgconf =head1 DESCRIPTION B is a modular, object-oriented framework for automating system configuration tasks. It is designed to meet the needs of both the day-to-day system manager and the experienced infrastructure architect. There are several types of objects in the B system, each of which serve a specific purpose. =head2 The B Object The central object in the B system is provided by the B module. The B object is extremely simple; it's primary function is to coordinate the activity of the other objects, which are where most of the work is actually done. =head2 Data Objects Instead of storing configuration data in static variables, B encapsulates data in objects. This provides a great deal of flexibility in configuring the system, because each data object can provide whatever methods are appropriate for the encapsulated data. These methods can then be called from a data store (e.g., a config file; see below) to manipulate the data, which configures the system. The B system includes several useful modules that provide classes that can be instantiated to create new Data objects. However, new Data object classes can also be written to encapsulate more specialized data. For more information, see L. =head2 DataStore Objects Instead of providing a fixed mechanism for manipulating configuration data (such as a config file format), B delegates this functionality to a special object, called a DataStore object. Because this mechanism is implemented in a seperate module, new data stores can easily be implemented. DataStore objects are instantiated direcly by the B object, based on entries in the F file. The B system includes a sample DataStore implementation called B that reads configuration data from a local configuration file. For more information, see L. =head2 Action Objects Action objects represent an action that may need to be performed on the system. They provide methods for checking whether the action is necessary, displaying details about the changes that would be made to the system, and actually performing the action. The B system includes several useful modules that provide classes that can be instantiated to create new Action objects. However, new Action object classes can also be written to represent more specialized actions. For more information, see L. =head2 Control Objects Control objects are the real workhorse of the B system. They are responsible for directing the overall process of configuring the system. They can instantiate and register new Data objects, modify Data objects provided by other Control objects, and instantiate and register new Action objects. Control objects are instantiated direcly by the B object, based on entries in the F file. The B system includes Control modules for configuring many common tools. These modules are located in the B tree. =head2 The Big Picture The following pseudocode illustrates how the B object coordinates the activities of the other objects: instantiate_datastore_and_control_objects() foreach datastore_object datastore_object->read_config() foreach policy_method control_object->policy_method() foreach control_object control_object->decide() foreach action_object action_object->check() foreach action_object { if (action_object->changed()) { if (diff_mode) action_object->diff() if (fix_mode) action_object->fix() } } foreach control_object control_object->cleanup() =head1 SEE ALSO L L =cut