System configuration
The specific definition of the elements that define and/or prescribe what a system is composed of. For example, in Systems Engineering, a System Configuration (SC) defines the computers, processes, and devices that compose the system and it's boundary.
Alternatively the term System Configuration can be used to relate to a model (declarative) for abstract generalized systems. In this sense the usage of the configuration information is not tailored to any specific usage, but stands alone as a data set.
Sample Configuration
The following is a basic SC XML System Configuration:
<system_configuration>
<site name="MyHouse" >
<hosts>
<host_ref name="host1"/>
</hosts>
</site>
<group name="mysql" gid="500"/>
<user name="mysql" uid="500">
<groups>
<group_ref name="mysql"/>
</groups>
</user>
<host name="host1" >
<users>
<user_ref name="mysql">
</users>
<profiles>
<profile_ref name="workstation"/>
</profiles>
</host>
<profile name="workstation" >
<components>
<component_ref name="user-setup" >
<component_ref name="mysql-db" >
</components>
</profile>
<component name="user-setup">
</component>
<component name="mysql-db">
</component>
</system_configuration>
Description: This provides information about a single "site" (MyHouse) and specifies that there is one host with user-setup and mysql-db components. The host must have an account on it for a user named mysql, with appropriate parameters. Notice that the configuration schema requires no XML tags that are Windows or UNIX specific. It simply presents data' as standalone information - with no pretense for how the data is to be used.
This is the hallmark for a good System Configuration model.
Further Extensions
The above model can be extended. For example, the user could have more attributes like "preferences" and "password". The components could depend on other components. Properties can be defined that get passed into sub-elements. The extensions can be endless (WATCHOUT: complexity) and must be managed and well-thought-out to prevent "breaking" the idea of the System Configuration.
Usage
The usage for the model in practical terms falls into two categories: Deployment & Operations.
Deployment
Deployment involves interpreting a configuration data set and acting on that data to realize the configure the system accordingly. This may simply be a validation of what's there to confirm that the configuration is in effect.
Examples include a Perl library launched from the command line to read the configuration and begin launching processes on the local or remote hosts to install components. Also while the system is running, there may be a SystemConfiguration service that provides an interface (i.e. CORBA IDL interfaces) for other system applications to use to access the configuration data, and perform deployment-like actions.
Operations
When the system is in operation, there may be uses for the configuration data by specific kinds of services in the system. For example, a SecurityManager may access the configuration to acquire the MD5 passwords for the user accounts that are allowed to login to hosts remotely. A SystemMonitor service may use the data to determine "what to monitor" and "how to monitor" the system elements. A PresentationManager might use the data to access menu-items and views based on user access privileges.