Public:Svamberg/meta/FAI/Nový stroj

Z HelpDesk

Toto je jednoduchý (interní) návod, jak postupovat při založení nového stroje nebo clusteru v instalačním systému FAI.

Konfigurační strom

Všechny cesty jsou psány relativně vůči adresáři /var/lib/fai na instalačním serveru (toho času cico.civ.zcu.cz, cicomexocitl.civ.zcu.cz na adrese 147.228.52.35).

Základní informace o konfiguračním stromu FAIe naleznete ve FAI Guide, zde jsou uvedeny jen části, které jsou využívány při instalaci v METACentru.

config/class

Ve skriptech [0-9][0-9]\w+ se nastavuji na základě známých údajů (hostname, IP adresa, architektura, ...) třídy pro instalaci, do nichž instalované zařízení patří. Celá instalace se dále řídí na základě tříd. Třídy mají prioritu (dříve zadaná má vyšší prioritu). Výsledné uspořádání tříd je následujicí:

  • LAST - defaultní třída, nejvyšší priorita
  • <hostname> - defaultní třída, druhá nejvyšší priorita
  • uživatelsky definované třídy
  • DEFAULT - defaultní třída s nejnižší prioritou

Každá třída může importovat do procesu instalace proměnné, ty jsou uloženy v souboru <název třídy>.var, syntaxe je shodná se shellem bash a lze v ní používat obvyklé konstrukce (nahrazování, podmínky, ...), například:

kernelversion=2.6.12.6
kernelimage=kernel-image-${kernelversion}_10.00.Custom_i386.deb   

config/disk_config

Konfigurace rozdělení disků pro dané třídy. Vítězí ta třída, která má nejvyšší prioritu. Popis konfiguračního souboru je v dokumentaci FAI Guide

config/files

Zde je sklad souborů, které využívá program fcopy a ftar. Soubory se ukládají pod jménem třídy, v jaké mají být použity, například soubor /etc/resolv.conf se uloží do config/files/etc/resolf.conf/DEFAULT a v instalačním skriptu se kopíruje příkazem fcopy /etc/resolv.conf.

Do adresáře config/files/packages je doporučováno ukládání vlastních nebo upravených distribučních balíků, které se budou instalovat jinak (dpkg, rpm, ...), než přes fcopy či ftar.

config/hooks

Instalační proces je rozdělen na několik fází, tzv. tasky, detailní popis jednotlivých tasků je ve FAI Guide Hook skripty se pouští vždy před daným taskem a jsou závislé na tom, zda je nadefinovaná třída pro kterou je určen. Například config/hooks/configure.INSTALL_RSYNC se pouští před fází configure (spouštění konfiguračních skriptů) a jen v případě, že instalovaný stroj patří do třídy INSTALL_RSYNC.

config/scripts

Obsahuje skripty, které se mají provádět, ty se provádějí v opačném pořadí priorit třídy, tedy napřed DEFAULT třídy a následně uživatelské. Je vhodné pro každou třídu založit samostatný adresář a v ní číselně uspořádat jednotlivé skripty. Je vhodnější psát více menších a přehledných skriptů. Psát skripty lze pro bash, perl a cfengine.

Tyto skripty jsou určeny pro automatické doladění systému, jako je zavedení bootloaderu nebo úpravu hostname v konfiguračních souborech.

nfsroot

Zde uložen nfsroot pro instalaci architektury I386.

Příklad založení clusteru Minos

Konfigurace

Na FAI serveru (toho času cico.civ.zcu.cz) ve /var/lib/fai/config/ upravíme soubor class/30-cluster přidáním dalšího oddílu do case struktury:

       minos*)
               echo CLUSTER
               echo CLUSTER_MINOS
               echo DIST_DEBIAN
               echo INSTALL_RSYNC
       ;;

Popis použitých tříd:

  • CLUSTER - obecná třída pro použítí na všech clusterech (uzlech), zatím užita jen v config/scripts
  • CLUSTER_MINOS - rozdělení disku, override soubory pro GRUB
  • DIST_DEBIAN - pro specifické úpravy v Debianu (převážně určeno pro config/scripts, nyní nepoužíváno
  • INSTALL_RSYNC - určuje způsob instalace přes rsync kopírováním obrazu, nikoliv postupnou instalací po balících
  • GRUB - automaticky zavedená, použije se pro instalaci zavaděče

Vytvoříme .var soubor class/CLUSTER_MINOS.var v kterém definujeme nazev image, která se má použít přes rsync:

 install_rsync_image=skurut

Nastavení rozdělení disku v souboru disk_config/CLUSTER_MINOS:

 # <type> <mountpoint> <size in mb> [mount options]     [;extra options]
 
 disk_config hda
 primary /part_small         150 rw,errors=remount-ro    ;-j ext3 boot
 primary swap               2000
 primary /scratch             1- rw                      ; xfs
 logical /                  5000 rw                      ; xfs
 logical /var/cache/openafs 1000 rw                      ; ext2

Připravit konfigurační soubory pro GRUB v config/files/boot/grub/, pokud nebudou nastaveny, bude použito konfiguračních souborů v obrazu. Dále připravit override soubory pro am-utils, ganglia a resolv.conf, vše v adresáři config/files/etc/.

Instalace

Je potřeba pro boot použít kernel s podporou NFS-ROOT a vhodná je podpora DHCP. Takový kernel je uložen ve /usr/lib/fai/kernel/. Vyrobení bootovacího CD lze příkazy:

cd /tmp
mkdir -p iso/boot/grub
cp /lib/grub/i386-pc/* iso/boot/grub 
cp menu.lst iso/boot/grub
cp <vmlinuz|memtest> iso/boot
mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -o grub.iso iso

Ukázkový menu.lst:

default         0
timeout         120
color cyan/blue white/blue

title FAI(install):  elektra1 - 2.6.17.8labsboot
root (cd)
kernel /boot/vmlinuz-2.6.18-fai-kernels root=/dev/nfs ip=dhcp nfsroot=147.228.52.35:/var/lib/fai/nfsroot \ 
       FAI_LOCATION=147.228.52.35:/var/lib/fai/config FAI_FLAGS=createvt,sshd,verbose FAI_ACTION=install

title Memtest86
root (cd)
kernel /boot/memtest86.bin

title Memtest86+
root (cd)
kernel /boot/memtest86+.bin

Pokud není k dispozici DHCP, je nutné parametry pro option ip zadat ručně ve formátu:

 ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>

Více v dokumentaci /usr/src/linux/Documentation/nfsroot.txt.

Omezení

Na serveru jsou nastaveny tyto možná omezení, která je v případě potíží s instalací zkontrolovat, jedná se hlavně o přístup k NFS svazkům a rsyncu:

  • firewall
  • /etc/exports
  • wrappery (/etc/hosts.deny a /etc/hosts.allow)

Správa instalačních obrazů

Vytvoření nového obrazu

Kopírování obrazu

Je třeba okopírovat image (konos37) na FAI server (cico):

konos37# ssh -c blowfish -L 2323:localhost:2323 root@cico.civ.zcu.cz
ssh:cico# mkdir /var/lib/fai/images/konos-2007.12.07
ssh:cico# cd /var/lib/fai/images/konos-2007.12.07/
ssh:cico# nc -l -p 2323 | tar xv --preserve --numeric-owner

konos37# cd /
konos37# tar c --exclude=/afs/* --exclude=/scratch/* --exclude=/var/cache/openafs/* --exclude=/proc/* --exclude=/sys/* --exclude=/auto/* / | nc localhost 2323

anebo jinak:

konos37# tar c --exclude=/afs/* --exclude=/scratch/* --exclude=/var/cache/openafs/* --exclude=/proc/* --exclude=/sys/* --exclude=/auto/* / | ssh root@cico.civ.zcu.cz "mkdir /var/lib/fai/images/konos-2007.12.07; cd /var/lib/fai/images/konos-2007.12.07/; tar xv --preserve --numeric-owner"

Poznámka: knowhow posledního příkazu by Miloš Mulač.

Po ukončení kopírování je možné netcat přerušit na straně, kde se archiv vytváří (tar c) a ssh spojení s tunelem ukončit.

Pozor, v nekterych verzich 'tar' je bug! Link, který vede na další link (např. /usr/bin/w) se nemusí korektně vytvořit.

Konfigurace rsyncu

Nový obraz je třeba zapsat do /etc/rsyncd.conf, restart daemona není potřeba, konfigurační soubor se načítá při každém připojení klienta.

Update existujícího obrazu

Vytvoří se nový obraz a ten se použije, starý obraz se ponechá jako záloha.

Kompilace FAI kernelu

Pokud nelze použít jádra z balíku fai-kernels (například kvůli xenu), pak je třeba provést kompilaci, např. příkazem:

make-kpkg --added-patches xen --initrd --revision 2.6.18-5 --append-to-version -fai --config menuconfig configure kernel_image modules_image

Návod pro jádra 2.6.18 http://www.backenhoernchen.de/dokuwiki/computer/howtos/buildxenkernelnopae_howto