After evaluating numerous automated OES server installations over the past years, Novell Consulting came to the following conclusions:
AutoYaST control files contain properties that are identical for all customer environments, such as meta XML information, system user settings, and system runlevel.
There are always properties that differ between customer environments, and that might differ between locations or sites of a particular customer, but are the same for all servers in that particular environment, such as time settings, name resolution (DNS, SLP, hosts), LDAP server, and replica server.
Control files typically contain server-specific information such as the host name, IP addresses, network masks, MAC addresses, and PCI IDs.
Novell Consulting decided that the installation framework must be based on the following design principles:
The installation is based on XML class files.
The configuration of SLES and OES services is split into individual XML files (snippets) that can be combined into service types as needed.
All dynamic information is removed from the XML files and replaced by placeholder variables.
These modified XML files containing placeholders are referred to as template files.
Information relevant for multiple systems is stored in a set of configuration text files supporting a similar set of variables to allow overwriting general configuration information with deviating information specific for a smaller subset of systems.
Server-specific information is stored in a semicolon-separated server configuration file.
The system being installed retrieves the required template files to its /tmp/profile directory and merges them into a complete template control file.
The system being installed also retrieves the required configuration files to its /tmp/profile directory and replaces all placeholders with the actual values, resulting in a server-specific autoinst.xml file.
The framework is implemented in a main library that is developed and maintained by Novell Consulting.
The framework must fit into every customer environment without code modification.
Customer-specific requirements can be implemented in a custom library that is already integrated in the framework. It can use every function of the main library.
A custom server configuration file for additional server-specific information processed by the custom library is also supported.
This design approach has two fundamental requirements: the ability to execute scripts on the system being installed and the ability to modify the original /tmp/profile/autoinst.xml control file before the actual installation starts.
The first requirement is met by AutoYaST's pre-script stage at the beginning of an installation within the initial RAM disk. In this stage, shell and Perl scripts specified in the control file are executed. In addition, network access for retrieving external files is possible.
After the pre-script stage, AutoYaST checks for a file named /tmp/profile/modified.xml. If this file exists, autoinst.xml is renamed to pre-autoinst.xml and modified.xml is renamed to autoinst.xml.
The installation then starts and processes the information in this new control file. If that file does not exist, the original control file is used instead.