FAI kasutamine Debianiga

Allikas: Kuutõrvaja
Redaktsioon seisuga 12. mai 2009, kell 21:13 kasutajalt Imre (arutelu | kaastöö) (Xen PV domU klient)

Sissejuhatus

FAI (Fully Automatic Installation) http://www.informatik.uni-koeln.de/fai/ süsteem võimaldab korraldada automaatset operatsioonisüsteemi paigaldamist. Sellisest asjakorraldusest võib olla kasu nt järgnevatel juhtumitel

  • ülesandeks on hallata suhteliselt suurt hulka arvuteid (kümneid või sadu)
  • eeldusel, et automaatne paigaldus on hästi ettevalmistatud ja arvuti nö iseloom seda võimaldab, pole tarvis põhimõtteliselt kõnealust arvutit varundada

FAI süsteem koosneb üldiselt sellistest komponentidest, FAI serverist ja FAI klientidest

                  _____
                 |     | FAI server: dhcp, tftp, nfs
                 |_____|
                    |
                    |
            ---|----|-------|------------|---
               |            |            |
             __|__        __|__        __|__
            |     |      |     |      |     |  ....
            |_____|      |_____|      |_____|
             
             smtp1        smtp2        squid
                       FAI kliendid

ning töötab selliselt, et FAI kliendi käivitamisel sooritatakse selline järgnevus

  • FAI klient saab oma MAC aadressi alusel endale dhcp serverist võrguseadistused sh domeeninime (st hostname'i)
  • FAI klient kopeerib FAI serverilt tuuma ja initramfs'i
  • FAI klient ühendab FAI serverilt omale külge juurfailisüsteemi, seda süsteemi kasutatakse kliendi ettevalmistamise keskkonnana
  • FAI klient käivitab installeri, mis töötab FAI serveril asuva seadistuse juhtimisel
  • FAI kliendi lokaalsele kõvakettale paigaldatakse operatsioonisüsteem

Järgmisel FAI kliendiks oleva arvuti alglaadimisel peab vaatama, et ei korduks soovimatult operatsioonisüsteemi paigaldamise protseduur ja käivituks paigaldatud süsteem.

See kui efektiivseks kujuneb FAI kasutamine sõltub sellest, kui palju vaeva näha FAI serveri seadistamisel, eriti nende tegevuste kirjeldamisel, mis kliendid seadistavad.

Praktiliselt on võimalik FAI serveri juhtimisel FAI kliendil seadistada muu seas

  • kõvakettakasutus (fdisk partitsioonid, LVM, tarkvaraline raid, failisüsteemid)
  • millised .deb paketid paigaldatakse
  • võrguparameetrid
  • kostümiseerida paigaldatud tarkvara seadistused (nt kopeerida sobiva sisuga /etc/squid/squid.conf)
  • seadistada initramfs (nt korraldada, et initramfs oskab alglaadida süsteemi LVM'ilt juurfailisüsteemilt)

FAI kasutamisel tekitatakse operatsioonisüsteem nö Debiani paketi ja üksiku faili (tavaliselt seadistusfaili) täpsusega. St ei toimu ettevalmistatud operatsioonisüsteemi tõmmise plokk-haaval kopeerimist. Sellise lähenemise eeliseks on suurem paindlikkus töötava süsteemi haldamisel, kannatab aga uue arvuti tekitamise kiirus kuigi praktiliselt mitte oluliselt (alltoodud Squid arvuti näites kestab paigaldus 7-8 minutit kaasaegsel riistvaral töötavale mõõduka ressursiga Xeni HVM domeenile).

FAI süsteem sarnaneb RedHati KickStartile, Solarise JumpStartile ja Suse Autoyastile.

Eesmärk

Kuna Xen keskkonnas on mõnus katsetada erinevate tehnoloogiatega, siis eesmärgiks on ettevalmistada Xen PV (paravirtuaalne) domU sees töötav FAI server ning näidata kuidas erinevaid FAI kliente kasutada

  • Xen HVM domU - kõige lihtsam ja kiirem katsetuste tegemiseks
  • Xen PV domU - kui juhtumisi on kombeks pidada Xen PV abil teenuseid, siis sellest juhtumist võiks olla praktilist abi
  • füüsiline arvuti

Kõigil juhtumitel FAI klient alglaadib ennast võrgust PXE abil st sooritatakse DHCP -> TFTP -> NFS järgnevus.

FAI serveril töötavad koos sellised teenused

  • DHCP server
  • TFTP server
  • NFS server

Täpsemalt, eesmärgiks on ettevalmistada FAI server ja sellelt paigaldada selliste omadustega klient

  • kõvakettakasutus
 /boot - /dev/hda1
 LVM PV system - /dev/hda2
 swap - LVM LV /dev/system/swap
 / - LVM LV /dev/system/system
  • domeeninimi - squid.auul
  • Squid, kostümiseeritud /etc/squid/squid.conf

FAI serveri ettevalmistamine

FAI serverisse tuleb paigaldada pakett, mis paigaldab lisaks vajalikud sõltuvused

 # apt-get install fai-quickstart

Peale tarkvara paigaldamist tuleb /etc/fai/fai.conf seadistusfail üle vaadata, tõenäoliselt vaikeväärtused sobivad

 LOGUSER=
 FAI_LOGPROTO=ssh
 FAI_CONFIGDIR=/srv/fai/config
 MNTPOINT=/media/mirror
 FAI=/var/lib/fai/config

FAI NFS serveriga seotud seadistused on kirjeldatud failis make-fai-nfsroot.conf, kus 192.168.10.199:9999 on apt-proxy

 NFSROOT=/srv/fai/nfsroot
 TFTPROOT=/srv/tftp/fai
 FAI_DEBOOTSTRAP="lenny http://192.168.10.199:9999/debian"
 FAI_ROOTPW='$1$kBnWcO.E$djxB128U7dMkrltJHPf6d1'
 FAI_DEBOOTSTRAP_OPTS="--exclude=dhcp-client,info"

FAI serveri sh NFS komponendi ettevalmistamiseks tuleb öelda

 # fai-setup -v

Selle tulemusena valmistatakse muu hulgas ette NFS juurikas, mida klientide paigaldamisel kasutatakse abistava keskkonnana. NFS juurika õnnestumises on võimalik natuke veenduda nt selliselt

 # chroot /srv/fai/nfsroot/live/filesystem.dir

Nimeserveri ettevalmistamine

Selles keskkonnas, kus FAI'd kasutatakse võiks olla nimeserver ning seal olema kirjeldatud kliendi domeeninimi squid.auul

DHCP serveri ettevalmistamine

DHCP serveriks sobib kasutada sellise seadistusfaili /etc/dhcp3/dhcpd.conf

 deny unknown-clients;
 option dhcp-max-message-size 2048;
 use-host-decl-names on;
 
 subnet 192.168.10.0 netmask 255.255.255.0 {
   option routers 192.168.10.254;
   option domain-name "auul";
   option domain-name-servers 192.168.10.254;
   option time-servers faiserver;
   option ntp-servers faiserver;
   server-name faiserver;
   next-server faiserver;
   filename "pxelinux.0";
 }
 
 host squid {
    hardware ethernet 70:01:68:01:02:20;
    fixed-address squid;
    option host-name "squid";
 }

TFTP serveri ettevalmistamine

TFTP serveri jaoks peab /etc/initd.conf failis sisalduma rida ning initd deemon peab käima

 tftp dgram udp wait root /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /srv/tftp/fai

Sobiva PXE seadistuse genereerimiseks tuleb öelda

 # fai-chboot -IFv squid

Tulemusena tekitatakse squid jaoks sobib PXE seadistusfail /srv/tftp/fai/pxelinux.cfg/C0A80AC8

 # generated by fai-chboot for host squid with IP 192.168.10.200
 default fai-generated
 
 label fai-generated
 kernel vmlinuz-2.6.26-2-amd64
 append initrd=initrd.img-2.6.26-2-amd64 ip=dhcp root=/dev/nfs nfsroot=/srv/fai/nfsroot boot=live \
   FAI_FLAGS=verbose,sshd FAI_ACTION=install

kus on iseloomulikud

  • FAI_FLAGS - kontrollib, milliste omadustega kliendi paigaldamise keskkonda kasutatakse, nt sshd tähendab, et keskkonda saab kliendi paigaldamise ajal ssh abil sisse logida, root ja parool fai vaikimisi
  • FAI_ACTION - kontrollib, millist tegevust sooritatakse, alternatiiviks oleks nt sysinfo, mis võimaldab tutvuda paigaldatava arvuti omadustega

NFS serveri ettevalmistamine

NFS serveri /etc/exports seadistatakse tõenäoliselt automaatselt, aga ta peaks sisaldama midagi sellist

 /srv/fai/config 192.168.10.0/255.255.255.0(async,ro,no_subtree_check)
 /srv/fai/nfsroot 192.168.10.0/255.255.255.0(async,ro,no_subtree_check,no_root_squash)

FAI kliendi seadistuse ettevalmistamine

FAI kliendi käivitamisel kliendi paigaldamise eesmärgil alglaaditakse süsteem nii, et tuum, initramfs ja juurfailisüsteem võetakse võrgust FAI serverilt. Nii külge ühendatud juurfailisüsteemi kasutatakse kliendi paigaldamist abistava keskonnana. Selle keskkonna utiliite kasutatakse kliendi lokaalse salvestusressursi ettevalmistamisel ja sinna peale tarkvara ja tarkvara seadistuste kopeerimisel.

FAI klient identifitseeritakse nt kliendi dhcp'st saadud domeeninime abil klient ja rakendatakse talle vastavate nn klassidega (ingl. k. class) seotud seadistusi.

FAI serveris kirjeldatud klientide seadistused asuvad kataloogis /srv/fai/config, alustuseks sobib kasutada FAI klientide näidis-seadistusi kopeerides

 # cp -a /usr/share/doc/fai-doc/examples/simple/* /srv/fai/config
  • class - vastavused klientide hostname'ide ja klasside vahel, ühe kliendiga võib olla seotud ka mitu klassi (nt FAIBASE, SQUID)
  • debconf -
  • disk_config - kõvaketta seadistused
  • files - kostümiseeritud seadistusfailid, nt Squidi /etc/squid/squid.conf
  • hooks -
  • package_config - paigaldatavad/eemdaldatavad paketid
  • scripts -

class

Konkreetse hostiga seotud klassid teeb kindlaks skript class/50-host-classes, nt

 #! /bin/bash
 # assign classes hosts
 
 case $HOSTNAME in
   squid*)
       echo "FAIBASE SQUID" ;;
   *)
       echo "FAIBASE DHCPC DEMO" ;;
 esac
 
 (ifclass I386 || ifclass AMD64) && echo GRUB 
 exit 0

Antud juhul squid.auul klient on seotud klassidega FAIBASE ning SQUID.

Kõigi muude kataloogide sees on klassinimelisi faile, mille sisu kasutatakse antud kliendi puhul, nt kõvakettaseadistustena kasutatakse faili disk_config/SQUID ja /etc/squid/squid.conf failina kasutatakse faili files/etc/squid/squid.conf/SQUID.

disk_config

Kõvaketta seadistused on määratletud antud juhul faili disk_config/SQUID sisuga

 # example of new config file for setup-storage
 #
 # <type> <mountpoint> <size>   <fs type> <mount options> <misc options>
 
 disk_config hda  bootable:1
 primary        /boot  500     ext3      rw
 primary        -      4096-   -         -
 disk_config lvm
 vg  system  hda2
 system-swap    swap   2048    swap      sw
 system-system    /      2048    ext3      rw

package_config

Kuna tõenäoliselt kõigis selle FAI süsteemi kontrolli all olevates arvutites kasutatakse Exim4 asemel Postfixi, siis sobib kasutada failis package_config/FAIBASE rea

 exim4

asemel rida, miinus paketi nime järel tähendab paketi eemaldamist

 postfix exim4-

files ja scripts

Kostümiseeritud Squidi seadistusfaili /etc/squid/squid.conf kasutamiseks tuleb kostümeeritud versioon paigutada faili files/etc/squid/squid.conf/SQUID ning lisada skripti scripts/LAST/50-misc lõpuossa teiste fcopy'de juurde rida

 fcopy -i /etc/squid/squid.conf

Lisaks, selleks, et LVM voluumi saaks kasutada juurfailisüsteemi jaoks peab olema fail files/etc/initramfs-tools/modules/SQUID sisuga

 dm_mod

ning lisada scripts/LAST/50-misc lõpuossa update-initramfs, sedasi

 ..
 $ROOTCMD update-initramfs -k all -u
 exit $error

Xen HVM domU ettevalmistamine

FAI katsetamises sobib kasutada Xen HVM domU'd, nt sellise seadistusfailiga /etc/xen/squid.cfg

 name="squid"
 memory=128
 vif  = [ 'mac=70:01:68:01:02:20,bridge=xenbr0' ]
 vcpus="1"
 
 kernel = '/usr/lib/xen-3.2-1/boot/hvmloader'
 device_model = "/usr/lib/xen-3.2-1/bin/qemu-dm"
 builder = 'hvm'
 disk    = [ 'phy:/dev/c_data/squid,ioemu:hda,w' ]
 
 cdrom="/dev/hdc"
 boot='n'  #d is cdrom boot, c is disk boot.
 vnc="1"
 vncviewer="1"
 sdl="0" 
 vcpus=1
 pae=1
 acpi=0
 apic=0

Peale süsteemi paigaldamist tuleb lokaalselt kõvakettalt alglaadimiseks kasutada rida

 boot='c'

Xen HVM domU kliendi installeerimine

Xen HVM domU kliendi installeerimiseks tuleb käivitada vastav domU öeldes

 # xm create /etc/xen/squid.cfg

ning ühenduda külge vnc kliendiga, nt

 $ vncviewer 192.168.10.251:5901

ning jälgida sündmuste edenemist

Fai-1.gif

FAI kliendi tekkimist saab jälgida logides peale klienti sisse peale ta installeerimiseks käivitamist, vaikimisi on root kasutaja parool 'fai'

 squid:~# df -h
 Filesystem            Size  Used Avail Use% Mounted on
 rootfs                 61M  3.2M   58M   6% /
 udev                   10M   40K   10M   1% /dev
 192.168.10.199:/srv/fai/nfsroot
                       4.0G  2.2G  1.6G  59% /live/image
 tmpfs                  61M  3.2M   58M   6% /live/cow
 aufs                   61M  3.2M   58M   6% /
 tmpfs                  61M     0   61M   0% /live
 192.168.10.199:/srv/fai/config
                       4.0G  2.2G  1.6G  59% /var/lib/fai/config
 /dev/mapper/system-system
                       2.0G   99M  1.8G   6% /target
 /dev/hda1             479M   11M  444M   3% /target/boot

Siit on ka hästi näha, et FAI kliendi ettevalmistamine toimub selliselt, et üle võrgu NFS pealt booditud nö paigaldamist abistavale süsteemile on külge ühendatud lokaalne storage kataloogi /target alla ja sinna valmistatakse süsteemi ette.

FAI klient logib oma tegevusi omajagu, lisaks on need logid olemas paigaldatud süsteemis /var/log/fai kataloogis

 squid:~# find -type f /tmp/fai
 /tmp/fai/software.log
 /tmp/fai/fcopy.log
 /tmp/fai/debconf.data
 /tmp/fai/debconf.log
 /tmp/fai/fstab
 /tmp/fai/format.log
 /tmp/fai/disk_var.sh
 /tmp/fai/variables.log
 /tmp/fai/status.log
 /tmp/fai/FAI_CLASSES
 /tmp/fai/dhclient.log
 /tmp/fai/boot.log
 /tmp/fai/dmesg.log
 /tmp/fai/fai.log

Xen PV domU klient

Xen PV domU kliendi kasutamiseks tuleb pisut enam ettevalmistusi teha

  • Xeni PV domU FAI kliendi tuum peab sisaldama aufs ja nn boot=live tuge
  • Xeni PV domU FAI kliendi domU seadistused peavad lisama sobivad tuuma parameetrid
  • Kasutatava FAI serveri NFSROOT peab sisaldama selle tuumaga sobivaid (st selle tuuma) mooduleid, millega PV domU FAI klienti paigaldamiseks algalaaditakse

Xeni tuuma ettevalmistamine

Kuna FAI kasutamiseks peab tuum, õigemini initramfs sisaldama aufs ja nn boot=live tuge ja ehk on kõige selgem kui kõik Xen süsteemis töötavad operatsioonisüsteemi eksemplarid (so dom0 ja domU'd) kasutavad sama tuuma ja initramfs'i, siis peavad dom0 peale olema paigaldatud paketid live-initramfs, aufs-tools ja aufs-modules-2.6-xen-amd64

 # apt-get install aufs-modules-2.6-xen-amd64 aufs-tools live-initramfs

Tuuma moodulid tuleb lisaks kopeerida FAI serveri juurde /lib/modules kataloogi (nagu tegelikult kõigisse teistessegi domU'desse).

Xeni PV domU ettevalmistamine

 name="postfix-pv"
 kernel="/boot/vmlinuz-2.6.26-2-xen-amd64"
 ramdisk="/boot/initrd.img-2.6.26-2-xen-amd64"
 root="/dev/xvda1"
 memory=384
 disk=['phy:/dev/c_data/postfix_pv,xvda1,w',
   'phy:/dev/c_data/postfix_pv_swap,xvda2,w' ]
 vif  = [ 'mac=70:01:68:01:02:02,bridge=xenbr0' ]
 vcpus="1"
 # extra='xencons=tty'
 extra='xencons=tty ip=dhcp root=/dev/nfs nfsroot=/srv/fai/nfsroot boot=live \
   FAI_ACTION=install FAI_FLAGS=verbose,sshd'
 
 nfs_server = '192.168.10.199'
 on_poweroff="destroy"

Xen PV FAI kliendi seadistuste ettevalmistamine

Xen PV FAI kliendi seadistused erinevad teatud määral tavalise nö riistvaralise kliendi omadest, nt kõvaketta ettevalistamise osas. Xen'i PV domU kõvakettad ei vaja üldiselt partitsioneerimist, piisab moodustada ainult failisüsteemid.

Xen PV FAI kliendi paigaldamine

 # xm create -c postfix-pv.cfg

Märkused

  • Kuna FAI võib ja tegelikult ka mitmel juhul peab käituma üsna agressiivselt st ilma küsimusi esitamata paigaldatakse arvutisse tarkvara, siis peab olema ettevaatlik, et võrgus ei oleks jäänud käima selliste omadustega FAI server, mis pahaaimatult alglaadmisele mineva arvuti selle käivitumisel üle installeerib.

Kasulikud lisamaterjalid