Provided by: fai-client_3.4.8ubuntu5_all bug

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 on a separate line. Use absolute paths 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.   Those   scripts   can   define   variables   by  writing  definitions  to  the  file
       $LOGDIR/additional.var, which will be sourced in the following task.

       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. Then classes defined by the variable ADDCLASSES are used. This  variable  must  be  a
       comma separated list of classes. You can define this variable on the kernel command line.

       Finally, the class with the hostname and LAST are defined.

       It's  important  that  each  line  in a file containg a class name ends with a newline. If the newline is
       missing on 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 the 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-architecture | tr /a-z/ /A-Z/
       uname -s | tr /a-z/ /A-Z/

       # all hosts named ant?? use 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

       You can define classes on the kernel command line by appening this to the kernel:

          ADDCLASSES=CLASS1,CLASSX,CLASS3

NOTES

       All  class  names should be written in uppercase letters (execpt the class of the hostname). Do not use a
       dash, use an 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://fai-project.org.

AUTHOR

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

FAI 3.3                                         23 September 2009                                   fai-class(1)