Hlavní navigace

Aktualizacni mechanismus v instalacnim systemu FAI.

24. 3. 2007 16:31 (aktualizováno) Jan Krcmar

na internetu existuje spousta clanku o FAIi, coz je instalacni system vyvijeny nemeckou univerzitou v Koline primarne pro clustery. co system umoznuje a nabizi neni treba v tomto clanku nijak rozepisovat, k tomu staci precist si serial na rootu. co nam ale ve FAIi chybi je nejaky rozumny aktualizacni mechanismus. implementovany FAI_ACTION update, pro jehoz beh se musi restartovat PC a tim treba narusit sitove sluzby, neni dost dobry. tento update byl vyvijen nejdrive jako fai patch, a postupne byl implementovan do faie (od ktere verzu tomu tak je se lze docist na oficialnich strankach FAI). prijemnejsi reseni nebylo na svete, coz me (spis meho zamestnavatele) donutilo k tomu, aby se zacalo neco prijatelnejsiho hledat a posleze (po neuspechu) psat…

jak tedy implementovat mechanismus do instalacniho systemu. rozhodl jsem se vychazet z toho, ze instalacni mechanismus spolehlive nainstaluje stanici a na kazde stanici budou ulozeny standartni logy o tridach a promennych pouzitych pri instalaci (uvazujeme temer nemenne tridy stroju, coz by zrejme slo obejit editaci souboru FAI_CLASSES). hlavni myslenka je, ze aktualizace budeme provadet z nejakeho repositare skriptu na siti (u nas je umisten ve ${FAI_LOCATION}/updates). repositar obsahuje adresare pojmenovane podle jednotlivych tridach. prvni krok tedy bude detekovat mozna spojeni na repositar. moznosti nebude mnoho: afs, nfs, ftp a dalsi mozno vyuzit dle predstavivosti. nejjednodussi je pristup pres afs/nfs, spusti se vyhledavani skriptu v repositari podle trid daneho stroje. nazvy skriptu budou obsahovat casove oznaceni (kdy byla aktualizace vydana) a pak nejaky pekny kratky popisek, ktery oznaci, co dany skript dela (aby v tom nakonec nebyl moc velky neporadek).

 $ ls fai.dev/updates/DEFAULT/
061105-long.sh 061209-update.sh 061224-updatenext.sh

jak vidime trida DEFAULT ma 3 vlastni skripty s casy, kdy byla zaplata vydana. aktualizacni system si pak musi pamatovat posledni datum aktualizace daneho stroje. to znamena, ze po nove instalaci je nutne provest vsechny aktualizace.
nakonec lze vyuzit cron pro pravidelne spousteni aktualizaci, nebo spoustet aktualizace pri startu stroje.

skript je psan v jazyce perl a veskera konfigurace je obsazena v konfiguracnim souboru etc/fai-update.conf, pro jehoz parsovani je pouzit Config::Auto (balik libconfig-auto-perl).

 $ cat etc/fai-update.conf 
#
# configuration file for FAI update mechanism
#

# directory that contains FAI_CLASSES, variables.sh
fai_dir=/var/log/fai/

# update directory on the nfs
update_dir=update_mechanism

# where to mount FAI_LOCATION
fai_nfs_target=/fai
fai_afs_target=/afs/.zcu.cz/public/linux-fai/fai.dev

# last update timestamp file
last_update=lastupdate

# log file
log=fai-update.log
  • fai_dir je cesta k souborum logovani pro instalaci FAIe
  • adresar fai_{nfs|afs}_target/update_dir obsahuje repositar aktualizacnich skriptu. navic fai_nfs_target navic urcuje, kam primountovat nfs
  • parametr last_update je nazev souboru, ve kterem je posledni datum aktualizace
  • log je nazev logovaciho souboru

v logovacim souboru lze najit informace o jednotlivych krocich instalace. zacatek a datum, uspesne ci neuspesne pokusy o parsovani souboru, zjistovani typu pripojeni, nazvy spustenych skriptu a pocet spustenych skriptu.

obsah adresare mechanismu:

 $ ls -a
. .. etc fai-update lastupdate packages.dep tasks.log

zdrojovy kod: update-client.tbz2

Sdílet