| Automating Operating System Configuration
 
Jack Tuszynski 
Introduction 
In an environment that includes a central network information
service 
(NIS) and a network file system (NFS) server that attends
to multiple 
desktop clients, a script can configure the client workstations
quickly, 
efficiently, uniformly, and reliably. The install_client
(ic) 
script I present here automatically sets up UNIX workstations
to operate 
in a local area network. After you've loaded an operating
system onto 
a workstation from a CD-ROM installation, you can run
ic to 
configure the workstation for network operation. 
CD-ROM Installation of Operating System and Commercial
Software 
The procedure for loading UNIX from CD-ROM to the system
disk varies 
from platform to platform. Most manufacturers offer
some type of standard 
partition table and collection of filesets which constitute
the default 
installation. However, there are a number of options,
so it's good 
practice to keep field notes regarding the decisions
you make during 
the install; you can then simply repeat those steps
for all subsequent 
installations on clients of the given model. 
A consistent CD-ROM installation process within a given
platform ensures 
that the same files and directories will reside on the
system disk 
for each workstation (a prerequesite for the install_client
script). The volume of the standard operating system
structure imposes 
a minimum size requirement for the internal hard disks
in the computers, 
which act as system disks. For smaller disks, you can
either upgrade 
to a larger size, or reduce the number of files to be
loaded. 
Most UNIX operating system vendors also sell compilers
and development 
tools and other application programs which they hardwire
into their 
edition of UNIX. These programs, which are integrated
into the operating 
system after the CD-ROM installation, change or add
to the operating 
system files and directories and affect its operations.
For example, 
Hewlett Packard's Softbench installs itself into /usr/softbench
and overrides many of the actions of HP-VUE, the HP
user workbench 
environment, which resides in /usr/vue. After Softbench
is 
installed, the VUE environment is driven by the files
in /usr/softbench 
rather than /usr/vue. Using an automated script to configure
workstations requires a specific arrangement of files
and directories 
on the system disk. For the install_client system to
work, 
add-on programs must be implemented immediately after
the operating 
system has been loaded and are then treated as if they
were part of 
the default operating system installation. 
Manual Installation Preparation Steps 
Certain steps in installing the operating system must
be performed 
manually. If, for instance, a site prefers xterms over
hpterms 
or the C shell over the Bourne shell, or if there is
a need to adjust 
the Delete key's actions on the computer's keyboard,
the initial root 
environment has to be set up accordingly. Most computers
require calibrating 
the ifconfig setting for the network cards to function
properly. 
Also the proper entries for the default route need to
be adjusted. 
Usually, workstations get defined as NIS clients during
operating 
system installation. On some platforms, however, the
NIS client setup 
entails turning on certain flags from the root account
after the primary 
installation has been completed. The NFS system must
be initialized, 
and the flags and states that turn a workstation into
an automount 
client must be initiated. The workstation then needs
to be rebooted 
to begin functioning as an NIS and NFS client. 
Once the correct environment has been established, the
network is 
functioning properly, and the flags and states to turn
the workstation 
into an NIS and NFS client have been turned on, the
automated process 
can take over. You initiate the process by ftping the
ic 
script to the workstation, preferably to the /tmp working
area. The script must be set to be executable. After
the reboot, it's 
a good idea to make sure that NIS and NFS automount
are indeed working. 
That done, the install_client script is ready to be
run. 
Automated Bootstrapping 
The install_client procedure relies on data that resides
on 
the file server. Before the main loop can begin, install_client
needs to establish access across the network to the
part of the file 
server which holds the maps and modifications used to
arrange the 
operating system. To illustrate: if the files that the
program needs 
are in the /usr/local/adm/clients subdirectory, then
a link 
must be created in /usr to point to it. 
A map called ic.txt outlines the changes to be made
to an 
operating system. It uses the same type of format conventions
as the 
UNIX /etc/passwd file. Figure 1 lists the fields of
the ic.txt 
map and shows examples of their use. install_client
uses these 
fields as parameters for the commands that turn a standard
vanilla 
operating system into a client workstation. Special
utilities allow 
you to safely edit the ic.txt map file. They are similar
in 
nature to Solaris's useradd, usermod, and userdel 
instructions, which manage the /etc/passwd and shadow
files. 
A directory named lib, in the client's data area, holds
the 
altered version of files from each separate operating
system. 
For instance, if an inetd.conf file is configured to
pass 
connections through a TCP/Wrapper, then the updated
version of 
the inetd.conf file should be kept in the lib subdirectory.
Every release of an operating system has a different
subdirectory 
dedicated to storing its files in the client's area.
A link to the 
latest version of an operating system maintains access
to the most 
current version that is used by the install program.
Backwardly compatible 
client versions must be prepared specially by changing
the link back 
to an older version. Figure 2 shows how the lib subdirectory
of the client's data area can be organized. 
Using the ic.txt map to prepare workstations requires
system 
administrators to keep track of variations in the operating
system. 
As alterations occur to the operating system, the updated
files must 
be copied to the install_client staging area. In practice,
the ic.txt map and associated records serve a dual purpose:
they formulate 
new nodes on a network, and they often help quantify
what changes 
have been made and where to the many UNIX workstations
that act as 
clients. 
The uname command seems to have standard usage across
the 
many flavors of UNIX. It enables a program to figure
out the exact 
identity of the computer and the version of the operating
system that 
it is running. A number of environment variables can
be determined 
from the output of the uname command. Then a path must
be 
generated which best utilizes the resources of the particular
system. 
A unique time stamp must be generated once the location
and structure 
of the date command is known. The time stamp is appended
to all saved 
files during the main loop. It allows install_client
to be 
run multiple times without overwriting or destroying
critical data. 
Previous renditions of a file or directory are moved
to a copy with 
the same name and a distinct suffix. 
Automated Core Installation 
The tasks required to install a client workstation can
be grouped 
in several categories. Custom actions must be run before
and after 
the main loop. Directories must be constructed. Files
must be created 
or copied. And links must be implemented. The order
in which these 
tasks must be done constitutes the structure of the
install_client 
script, in Listing 1. 
Several steps must be taken before the main loop begins.
A switch 
statement guided by the platform on which ic is running
determine 
which actions must be taken. For example, sendmail must
be 
stopped before the install_client process begins, because
you cannot copy a preferred and secure UC Berkeley sendmail
binary into /usr/lib while sendmail is up and running. 
The main loop creates directories, files, and links.
The main loop 
interprets each record of the ic.txt map file and takes
the 
appropriate steps to implement them, one by one. A log
is displayed 
on the screen as the respective directories, files,
and links are 
created in the operating system. 
After the main loop finishes, various procedures get
executed; again, 
a switch statement controlled by the platform on which
ic is running 
determines which actions must be taken. For example,
on the HP-UX 
platform, you might want to create a /dev/rscsi device
with 
the aid of /etc/mknod so that users can listen to compact
discs on their workstations. 
Manual Post-Installation Steps 
Depending on the operating system being initialized,
several manual 
operations may need to be performed after the ic program
has finished. 
For instance, a custom kernel rebuild or special patches
may be required. 
These steps may not be lend themselves to being automated
and so should 
be done separately from the install_client script. 
After the installation process is completed, the machine
should be 
rebooted again. When the machine becomes available,
users should be 
able to login and use their accounts on the client workstations.
Any 
special features of the computer are in place. The desktop
workstation 
has been fully furnished with all of the standard amenities.
The entire 
process normally takes approximately one to two hours
of system administration 
time, including data loading from media, per node. Since
most of the 
phases of the process are automated, this installation
script method 
offers greater reliability and efficiency for setting
up nodes in 
a client/server environment than manual construction
techniques.  
 
 About the Author
 
Jack Tuszynski is a System Administrator and Programmer
with 
NASA's Jet Propulsion Laboratory (JPL), Advanced Multimission
Software 
Technology Group (AMST). He has administered Vax systems,
PCs, and 
UNIX workstations for ten years. He holds a Master of
Science in Computer 
Science degree from California State University, Northridge. 
 
 
 |