fai-class

Langue: en

Version: 24 july 2003 (ubuntu - 07/07/09)

Section: 1 (Commandes utilisateur)

NAME

fai-class - define classes using files and scripts.

SYNOPSIS

fai-class [OPTION] DIRECTORY CLASSFILE

DESCRIPTION

fai-class executes scripts in DIRECTORY to define classes. All classes are written to CLASSFILE, each class in a line. Use absolute pathes for both arguments. All scripts or executables matching "[0-9][0-9]*" are executed in alphabetical order. They can define classes by writing the names of the classes to stdout. Classes can be separated by spaces or written one on a line. All lines that start with a "#" are comment lines and are ignored.

Shell scripts that end in ".source" are sourced and can define classes by setting the variable $newclasses. This is useful for scripts where you can't control stdout. Variables that are defined in these scripts are available to other scripts in DIRECTORY, but they are not exported to the shell that calls fai-class.

All scripts can define additional classes by writing the classes to the file $LOGDIR/additional-classes. These classes are defined after all scripts are executed. This temporary file will be removed after use.

The order of the classes is important because it defines the priority of the classes from low to high. First, the class DEFAULT is defined. Then all scripts are executed to define classes. After that, the classes from the file $LOGDIR/additional-classes are added. Then, all classes in the file with the hostname are added. Finally, the class with the hostname and LAST is defined.

It's important that each line in a file containg a class name ends with a newline. It the newline is missing in the last line of a file, this class can't be added.

The exit code of every script is written to the file status.log in LOGDIR.

OPTIONS

-d
Create debugging output.
-h
Show help, version and summary of options.
-T
Test if classes in CLASSFILE are defined multiple times. This should never happen. The test is executed after the classes are defined.
-t tmpdir
The file additional-classes is read from the directory tmpdir. Default value is /tmp/fai/.
-v
Create verbose output.

EXAMPLES


In FAI, fai-class is used in the following way:


   # fai-class /fai/class /tmp/fai/FAI_CLASSES

Then a list of all classes is defined in a shell script using following command:


    classes=`cat /tmp/fai/FAI_CLASSES`

EXAMPLES FOR SCRIPTS

 
 This is the script 01alias:
 
 #! /bin/sh
 
 catnc() { # cat but no comment lines
     grep -v "^#" $1
 }
 # echo architecture in upper case
 dpkg --print-installation-architecture | tr /a-z/ /A-Z/
 uname -s | tr /a-z/ /A-Z/
 
 # all hosts named ant?? are using the classes in file anthill
 case $HOSTNAME in
     ant??) catnc anthill ;;
 esac
 
 # a Beowulf cluster; all nodes except the master node
 # use classes from file class/atoms
 case $HOSTNAME in
     atom00) echo BEOWULF_MASTER ;;
     atom??) catnc atoms ;;
 esac
 
 # if host belongs to class C subnet 123.45.6.0 use class NET_6
 case $IPADDR in
     123.45.6.*) echo NET_6 ;;
 esac
 
 
 Another EXAMPLE:
 
 The script 24nis:
 
 #! /bin/sh
 
 # add NIS and the NIS domain name if YPDOMAIN is defined
 
 if [ -n "$YPDOMAIN" ];then
    echo "NIS $YPDOMAIN" | tr /.a-z-/ /_A-Z_/
 else
    echo NONIS
 fi
 
 

NOTES

All class names should be written in uppercase letters (execpt the class of the hostname). Do not use a dash, use underscore. Only executable scripts in DIRECTORY are used. CLASSFILE is removed before writing to it. Scripts should not directly write to CLASSFILE. LOGDIR should not be writable for everybody.

SEE ALSO


This program is part of FAI (Fully Automatic Installation). The FAI homepage is http://www.informatik.uni-koeln.de/fai.

AUTHOR

Written by Thomas Lange <lange@informatik.uni-koeln.de>