FAI ( Fully Automatic Installation )

FAI ist eine Sammlung von ["Shell"] und ["cfengine"]-Scripten, die es zusammen mit den ["Debian"]-Tools ["apt"]-get und debootstrap ermöglichen, eine komplette Installation und Konfiguration eines ["Debian"]-Systems automatisiert vorzunehmen. Mit FAI soll es möglich sein, völlig unbeaufsichtigt ein System oder eine ganze ["/Infrastruktur"] zu installieren.

Im Moment unterstützt FAI ["Debian"] I386/IA64/SPARC/PowerPC/Alpha und Solaris.

Homepage: http://www.informatik.Uni-Koeln.DE/fai/

Wiki: [http://faiwiki.informatik.uni-koeln.de/ FAIWiKi]

Neuigkeiten

Aber es gilt wie im Manual auch schön beschrieben wird: Plane Deine Installation (["/Infrastruktur"]) richtig und mit FAI kannst Du diesen Plan einfach installieren. Und genau dieser Plan ist nicht einfach zu erstellen. Viele Entscheidungen müssen getroffen werden.

Allerdings müssen diese Entscheidungen auch in anderen Netzen gefällt werden. Doch oft sind die einfach gewachsen. Mit FAI könnte man so ein Netz neu gestalten.

Infos:

Lizenz: ["GPL"]

Tipps & Tricks

["Perl"], ["cfengine"] oder ["sh"] was ist am besten für welche Aufgabe verwendbar?

F: Wie entfernt man die schöne bunte FAI Meldung vom Install Klienten?

A: Man erzeugt in der nfsroot das file .nocolorlogo. Meist einfach  touch /usr/lib/fai/nfsroot/.nocolorlogo 

Mini-Howto

/SchnellStart

["/FAI einfrieren"]

Hilfsprogramme

make-fai-bootfloppy

Erstellt eine Floppy/CD zum booten wenn man nicht über Netzwerk (["PXE"]) booten kann/will.

Beispiele:

cdrecord /tmp/fai_iso.img -dev=2,5,0

 man make-fai-bootfloppy  gibt weitere Tips

Als schön empfinde ich das es unabhängig vom ["DHCP"] Server und damit der MAC Adresse der Netzwerkkarte sein kann. Speziell beim Testen mit nur einem aber in der Funktion wechselnden Klient macht das Sinn.

fai-chboot

Erzeugt ein PXE Konfigurations-File für FAI. Damit kann man dann den Klienten per Netzwerk booten.

Klassen

siehe auch bei installiertem fai: zcat /usr/doc/fai/classes_description.txt.gz

Erklärung der Kürzel in den Tabellen für die Klassen:
-------------------------
C = /fai/class/
V = used for *.var in /fai/class
D = /fai/disk_config/
P = /fai/package_config/
S = /fai/scripts/
F = /fai/files/ (used by fcopy)
A = auto class (defined by a script)
H = /fai/hooks

Actions

sysinfo : Hardware Information ausgeben und auf den Log Server schreiben.

install : Installieren des Targets.

softupdate : Wird auf dem Target aufgerufen. "fai -v softupdate"

Jede Action besteht aus mehreren Tasks. Es ist möglich, eigene Tasks und auch weitere Actions zu definieren.

Zusätzlich kann jeder Task klassenbasiert durch sogenannte Hooks modifiziert, übersprungen oder ersetzt werden. Damit läßt sich in einer DISKLESS-Klasse die Festplattenpartitionierung überspringen, während bei Systemen mit SUSE, REDHAT oder WINDOZE-Klassen das Installieren des Debian-Basis-Systems übersprungen wird, stattdessen wird dann "das andere OS" aus einem Tar-Archiv oder als Festplattendump mit dd installiert. Read The Fine FAI Guide ;-)

Flags

verbose : Mehr Meldungen / debugging

sshd : ["ssh"] daemon starten. Damit kann man sich während der Installation mit ["ssh"] einloggen.

syslogd :

createvt : Zusätzliche Terminals auf F2,F3 öffnen während der Installation

reboot : Neu booten nach der Installation.

debug :

FAI Parameter

Sind Variablen die gesetzt werden können. Defaultwerte werden meist aus den Werten in /etc/fai/fai.conf und make-fai-nfsroot.conf gesetzt.

Einige müssen rechtzeitig, also schon beim booten, richtig gesetzt sein. Jedoch kann man sie an vielen Stellen setzen. Das ist meistens von der Anwendung abhängig also Geschmackssache.

Hier einige Variablen:

(Klein sind Kernel Variablen groß sind FAI Variablen)

Hooks

z.B. Man möchte bestimmte Aktionen von FAI nicht ausführen lassen.

z.b. kein chboot weil man von Diskette gebootet hat. Einfach fai/hooks/chboot.DEFAULT mit diesem Inhalt anlegen

SCRIPTNAME=`basename $0`
skiptask=`echo $SCRIPTNAME | sed "s/\..*$//"`
skiptask $skiptask

Quelle: fai mailingliste.

FAI Kernels

Es gibt verschiedene ["Kernel"] unter FAI

# packages in /fai/files/packages/ that are installed to the new system
# used in scripts/DEFAULT/S01. This directory should be a simple repository.
# you can also include your specific kernel-image package
kernelversion=2.4.20 # for the packages  kernel-doc and kernel-source
addpackages="kernel-image-2.4.20-2-386"

ToDo: Erklären wie die Kernel von fai ausgewählt werden. Erklären wie sie erzeugt werden und wie man am besten startet.

Probleme finden

setze in:

/usr/lib/fai/nfsroot/etc/init.d/rcS
set -xv # for full debugging 

oder in Unterprogrammen z.B.:

/usr/lib/fai/nfsroot/usr/lib/fai/fai-savelog
#! /bin/bash -x

setze: FAI_FLAGS=verbose,createvt zum Beispiel in der ["PXE"] oder dhcp config Datei.

Themen rund um FAI

http://www.debian.org/doc/manuals/repository-howto/repository-howto.html

["dpkg/LokaleDebDateien"]

---

KategorieInstallation