FAI kasutamine Debianiga

Allikas: Kuutõrvaja
Redaktsioon seisuga 11. mai 2009, kell 10:23 kasutajalt Imre (arutelu | kaastöö) (Sissejuhatus)

Sissejuhatus

FAI (Fully Automated 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 arvu arvuteid (kümneid või sadu)
  • eeldusel, et automaatne paigaldus on hästi ettevalmistused ja arvuti nö iseloom seda võimaldab, pole tarvis põhimõtteliselt kõnealust arvutit varundada

FAI süsteem koosneb üldiselt sellistest komponentidest

                  _____
                 |     | 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.

Antud juhtumil on FAI kasutamist uuritud Xeni keskkonnas, kus

  • FAI serveriks on Xen PV domU
  • FAI kliendiks on Xen HVM domU
  • FAI klient alglaadib ennast võrgust kasutades PXE'd (st DHCP + TFTP + NFS)

Sellisel juhtumil moodustavad FAI serveri sellised teenused

  • NFS server
  • DHCP server
  • TFTP server

Eesmärk

Olgu eesmärgiks ettevalmistada FAI serveri selliste omadustega kliendi automaatne paigaldamine

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

FAI serveri ettevalmistamine

FAI serverisse tuleb paigaldada paketid

 # 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

FAI kliendi seadistuse ettevalmistamine

FAI kliendi käivitamiselt 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 -
  • hooks -
  • package_config - paigaldatavad/eemdaldatavad paketid
  • scripts

class

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

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

Antud juhul fai-client-1.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

Nimeserveri ettevalmistamine

Selles keskkonnas, kus FAI'd kasutatakse võiks olla nimeserver ning seal olema kirjeldatud kliendi domeeninimi fai-client-1.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 fai-client-1 {
    hardware ethernet 70:01:68:01:02:20;
    fixed-address fai-client-1;
    option host-name "fai-client-1";
 }

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

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)

Xen HVM domU ettevalmistamine

FAI katsetamises sobib kasutada Xen HVM domU'd, nt sellise seadistusfailiga

 name="fai_client_1"
 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/fai_client_1,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

Sobiva PXE seadistuse genereerimiseks tuleb öelda

 # fai-chboot -IFv fai-client-1

Tulemusena tekitatakse fai-client-1 jaoks sobib PXE seadistusfail /srv/tftp/fai/pxelinux.cfg/C0A80AC8

 # generated by fai-chboot for host fai-client-1 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

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 fai-client-1

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'

 fai-client-1:~# 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
 debian-tuler:/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.

Kasulikud lisamaterjalid