Fai (Fully Automatic Installation) Version 3.x Debian Squeeze install howto
FAI (Fully Automatic Installation) Version 3.x Debian Squeeze install howto
Dieses Howto beschreibt wie man eine FAI Instanz unter Debian Squeeze installiert.
Benötigte wird ein Server oder VM mit Debian Squeeze.
In diesem Beispiel heißt der Server
fai-squeeze.dmz-home.secretisland.de mit der IP 192.168.254.102
und er ist per DNS erreichbar.
Benötigte FAI Pakete installieren
[stextbox id=“bash“]apt-get install esmtp-run sudo fai-server fai-setup-storage fai-quickstart[/stextbox]
Es werden noch einige andere Pakete installiert wie tftpd-hpa und isc-dhcp-server die für FAI benötigt werden.
Bei der Installation wird einmal nach Einstellungen für MDADM gefragt. Das kann mit ok beantwortet werden.
Dann wird noch nach dem TFTP root directory gefragt. Hier wird /srv/tftp/fai angegeben.
Dann einfach warten bis alles Installiert wurde.
FAI Live-System vorbereiten
Im Verzeichnis /etc/fai werden die Konfigurationen für das Live-System hinterlegt. Das Live-System wird später per NFS freigegeben und der zu Installierende Server kann dies dann Mounten und die Installation beginnen.
In der /etc/fai/fai.conf wird eingestellt wo das Config Verzeichnis sich befindet.
[stextbox id=“bash“]nano /etc/fai/fai.conf[/stextbox]
# $Id$ # /etc/fai/fai.conf -- configuration for FAI (Fully Automatic Installation) # how to access the fai config space # If undefined here, make-fai-nfsroot/fai-setup will use default value # nfs:///$FAI_CONFIGDIR # supported URL-types: nfs, file, cvs, cvs+ssh, svn+file, svn+http, # git, git+http, hg+http FAI_CONFIG_SRC=nfs://fai-squeeze.dmz-home.secretisland.de/srv/fai/config SERVER=fai-squeeze.dmz-home.secretisland.de # LOGUSER: an account on the install server which saves all log-files # and which can change the kernel that is booted via network. # Configure .rhosts for this account and PAM, so that root can log in # from all install clients without password. This account should have # write permissions for /srv/tftp/fai. For example, you can use write # permissions for the group linuxadm. chgrp linuxadm /srv/tftp/fai;chmod # g+w /srv/tftp/fai. If the variable is undefined, this feature is disabled. # Define it, to enable it, eg. LOGUSER=fai LOGUSER=fai # set protocol type for saving logs. Values: ssh, rsh, ftp FAI_LOGPROTO=ssh # Access to Debian mirror via NFS mounted directory # If FAI_DEBMIRROR is defined, install clients mount it to $MNTPOINT #FAI_DEBMIRROR=yournfs debianmirror:/path/to/debianmirror # The following variables are read only for almost every user. # Do not change them unless you know what you are doing! # mount point where the mirror will be mounted MNTPOINT=/media/mirror # the local configuration directory on the install client FAI=/var/lib/fai/config
Hier geben wir als FAI_CONFIG_SRC unseren Server mit dem Verzeichnis /srv/fai/config an.
Außerdem legen wir den LOGUSER fai fest. Dieser wird benötigt um nach der Installation die Installation-Logfiles auf den FAI Server zu kopieren.
In der Datei /etc/fai/make-fai-nfsroot.conf wird festgelegt wo sich das Live-System auf dem FAI Server befinden soll.
Welches Verzeichnis als Config Space dienen soll.
Und welches root Passwort in dem Live-System vergeben ist. Das Standard root Passwort ist fai.
[stextbox id=“bash“]nano /etc/fai/make-fai-nfsroot.conf[/stextbox]
# these variables are only used by make-fai-nfsroot(8) # here you can use also variables defined in fai.conf # directory on the install server where the nfsroot for FAI is # created, approx size: 390MB, also defined in bootptab or dhcp.conf NFSROOT=/srv/fai/nfsroot # TFTP directory for FAI files TFTPROOT=/srv/tftp/fai # location of the configuration space on the install server FAI_CONFIGDIR=/srv/fai/config # Add a line for mirrorhost and installserver when DNS is not available # on the clients. This line(s) will be added to $nfsroot/etc/hosts. #NFSROOT_ETC_HOSTS="192.168.1.250 yourinstallserver" # Parameter for debootstrap: " " FAI_DEBOOTSTRAP="squeeze http://cdn.debian.net/debian" # the encrypted (with md5 or crypt) root password on all install clients during # installation process; used when log in via ssh; default pw is: fai FAI_ROOTPW='$1$kBnWcO.E$djxB128U7dMkrltJHPf6d1' # location of a identity.pub file; this user can log to the install # clients in as root without a password; only useful with FAI_FLAGS="sshd" #SSH_IDENTITY=/home/admin/.ssh/identity.pub # directory of hooks to be sourced at the end of make-fai-nfsroot, # i.e they have to be shell scripts. #NFSROOT_HOOKS=/etc/fai/nfsroot-hooks/ # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # following lines should be read only for most of you FAI_DEBOOTSTRAP_OPTS="--exclude=info"
Bedeutung der Variablen:
- NFSROOT
Das Installationsverzeichnis wo sich der NFSROOT befinden soll. - TFTPROOT
Das Verzeichnis wo sich der Kernel für den Netboot des live-systems befinden soll. - FAI_CONFIGDIR
Das Verzeichnis wo die Konfigurationsdateien für die Installation der Clients sich befinden sollen. - NFSROOT_ETC_HOSTSHost eintrag für das Live-System wenn DNS nicht funktionieren sollte
- FAI_DEBOOTSTRAP
Die Quelle, aus der die von debootstrap benötigten Pakete bezogen werden können. Dies kann ein lokales Verzeichnis oder ein FTP- / HTTP-Server sein. Hier wird auch die Version des späteren NFSROOT bestimmt. - FAI_ROOTPW
Das verschlüsselte Passwort für den Systemadministrator. Vorgegeben ist das Passwort „fai“; ein verschlüsseltes Password kann aus der Datei /etc/shadow kopiert werden oder mit dem Programm makepasswd erzeugt werden. Mit diesem PW könnten Sie während der FAI Installation auf den zu installierenden Server mit SSH connecten. - SSH_IDENTITY
Hier kann man ein SSH-Key File angeben das im Live-System hergenommen wird. Somit kann man sich dann auch ohne Passwort mit dem SSH-Key einloggen. - NFSROOT_HOOKS
In diesem Verzeichnis liegen bash-scripte die nach dem debootstrap ausgeführt werden - FAI_DEBOOTSTRAP_OPTS
Zusätzliche Parameter für die DEBOOTSTRAP Umgebung
Erstellung des FAI Live-Systems “FAI nfsroot”
Nachdem alle Einstellungen gemacht wurden kann mit dem Befehl fai-setup das Live-System erstellt werden. Dies benötigt ein paar Minuten.
Die Option -v gibt das ganze mit mehr Infos aus.
[stextbox id=“bash“]fai-setup -v [/stextbox]
Using configuration files from /etc/fai Creating FAI nfsroot in /srv/fai/nfsroot/live/filesystem.dir. By default it needs more than 380 MBytes disk space. This may take a long time. Creating base system using debootstrap version 1.0.26+squeeze1 Calling debootstrap squeeze /srv/fai/nfsroot/live/filesystem.dir http://cdn.debian.net/debian I: Retrieving Release I: Retrieving Packages I: Validating Packages . . . Creating base.tgz Upgrading /srv/fai/nfsroot/live/filesystem.dir `/etc/resolv.conf' -> `/srv/fai/nfsroot/live/filesystem.dir/etc/resolv.conf-installserver' `/etc/resolv.conf' -> `/srv/fai/nfsroot/live/filesystem.dir/etc/resolv.conf' Get:1 http://cdn.debian.net squeeze Release.gpg [1672 B] Ign http://cdn.debian.net/debian/ squeeze/contrib Translation-en Ign http://cdn.debian.net/debian/ squeeze/main Translation-en Ign http://cdn.debian.net/debian/ squeeze/non-free Translation-en Hit http://cdn.debian.net squeeze Release Get:2 http://security.debian.org squeeze/updates Release.gpg [836 B] Ign http://security.debian.org/debian-security/ squeeze/updates/contrib Translation-en Ign http://security.debian.org/debian-security/ squeeze/updates/main Translation-en Hit http://cdn.debian.net squeeze/main amd64 Packages Ign http://security.debian.org/debian-security/ squeeze/updates/non-free Translation-en Get:3 http://security.debian.org squeeze/updates Release [87.0 kB] Get:4 http://cdn.debian.net squeeze/contrib amd64 Packages [64.1 kB] Get:5 http://cdn.debian.net squeeze/non-free amd64 Packages [124 kB] Get:6 http://security.debian.org squeeze/updates/main amd64 Packages [382 kB] Get:7 http://security.debian.org squeeze/updates/contrib amd64 Packages [621 B] Get:8 http://security.debian.org squeeze/updates/non-free amd64 Packages [20 B] Fetched 660 kB in 9s (67.2 kB/s) Reading package lists... Reading package lists... Building dependency tree... Initializing package states... Writing extended state information... Reading task descriptions... The following NEW packages will be installed: busybox{a} dmsetup{a} fai-client{a} fai-nfsroot fai-setup-storage{a} file{a} initramfs-tools{a} klibc-utils{a} libapt-pkg-perl{a} libdb4.7{a} libdevmapper1.02.1{a} libklibc{a} liblinux-lvm-perl{a} libmagic1{a} libparse-recdescent-perl{a} libparted0debian1{a} live-boot{a} live-boot-initramfs-tools{a} parted{a} perl{a} perl-modules{a} The following packages will be upgraded: perl-base 1 packages upgraded, 21 newly installed, 0 to remove and 0 not upgraded. Need to get 11.9 MB of archives. After unpacking 44.3 MB will be used. Writing extended state information... Get:1 http://security.debian.org/debian-security/ squeeze/updates/main perl-base amd64 5.10.1-17squeeze6 [1068 kB] . . . Get:22 http://cdn.debian.net/debian/ squeeze/main fai-nfsroot all 3.4.7 [68.1 kB] Fetched 11.9 MB in 43s (273 kB/s) (Reading database ... 8487 files and directories currently installed.) Preparing to replace perl-base 5.10.1-17squeeze5 (using .../perl-base_5.10.1-17squeeze6_amd64.deb) ... Unpacking replacement perl-base ... Processing triggers for man-db ... Setting up perl-base (5.10.1-17squeeze6) ... Selecting previously deselected package libmagic1. (Reading database ... 8487 files and directories currently installed.) . . . Reading state information... 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. Adding additional packages to /srv/fai/nfsroot/live/filesystem.dir: nfs-common fai-nfsroot module-init-tools ssh rdate lshw portmap rsync lftp less dump reiserfsprogs e2fsprogs usbutils hwinfo psmisc pciutils hdparm smartmontools parted mdadm lvm2 dnsutils ntpdate dosfstools jove xfsprogs xfsdump procinfo dialog discover console-tools console-common iproute udev subversion liblinux-lvm-perl cfengine2 libapt-pkg-perl grub lilo linux-image-2.6-amd64 install_packages: reading config files from directory /etc/fai install_packages: read config file NFSROOT install_packages: executing chroot /srv/fai/nfsroot/live/filesystem.dir apt-get clean install_packages: executing chroot /srv/fai/nfsroot/live/filesystem.dir aptitude -R -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" install nfs-common fai-nfsroot module-init-tools ssh rdate lshw portmap rsync lftp less dump reiserfsprogs e2fsprogs usbutils hwinfo psmisc pciutils hdparm smartmontools parted mdadm lvm2 dnsutils ntpdate dosfstools jove xfsprogs xfsdump procinfo dialog discover console-tools console-common iproute udev subversion liblinux-lvm-perl cfengine2 libapt-pkg-perl grub lilo linux-image-2.6-amd64 Reading package lists... Building dependency tree... Reading state information... Reading extended state information... Initializing package states... Reading task descriptions... The following NEW packages will be installed: bind9-host{a} cfengine2 console-common console-data{a} console-tools dialog discover discover-data{a} dnsutils dosfstools dump gettext-base{a} grub grub-common{a} grub-pc{a} hdparm hwinfo jove less lftp libapr1{a} libaprutil1{a} libbind9-60{a} libbsd0{a} libcap-ng0{a} libcap2{a} libconsole{a} libdbus-1-3{a} libdiscover2{a} libdns69{a} libedit2{a} libevent-1.4-2{a} libexpat1{a} libfreetype6{a} libgcrypt11{a} libgeoip1{a} libgnutls26{a} libgpg-error0{a} libgssapi-krb5-2{a} libgssglue1{a} libhal1{a} libhd16{a} libisc62{a} libisccc60{a} libisccfg62{a} libk5crypto3{a} libkeyutils1{a} libkrb5-3{a} libkrb5support0{a} libldap-2.4-2{a} liblwres60{a} libneon27-gnutls{a} libnfsidmap2{a} libpci3{a} libreadline5{a} librpcsecgss3{a} libsasl2-2{a} libserf-0-0{a} libsvn1{a} libtasn1-3{a} libuuid-perl{a} libwrap0{a} libxml2{a} lilo linux-base{a} linux-image-2.6-amd64 linux-image-2.6.32-5-amd64{a} lshw lvm2 mbr{a} mdadm nfs-common ntpdate openssh-blacklist{a} openssh-client{a} openssh-server{a} pciutils portmap procinfo psmisc rdate reiserfsprogs rsync smartmontools ssh subversion ucf{a} usbutils xfsdump xfsprogs 0 packages upgraded, 90 newly installed, 0 to remove and 0 not upgraded. Need to get 57.2 MB of archives. After unpacking 177 MB will be used. Writing extended state information... Get:1 http://security.debian.org/debian-security/ squeeze/updates/main linux-base all 2.6.32-48squeeze1 [183 kB] . . . Get:90 http://cdn.debian.net/debian/ squeeze/main ssh all 1:5.5p1-6+squeeze3 [1248 B] Extracting templates from packages: 100% Preconfiguring packages ... Fetched 57.2 MB in 56s (1016 kB/s) Selecting previously deselected package console-data. (Reading database ... 10268 files and directories currently installed.) Unpacking console-data (from .../console-data_2%3a1.10-9_all.deb) ... Selecting previously deselected package libconsole. . . . Setting up console-data (2:1.10-9) ... Looking for keymap to install: NONE Setting up libconsole (1:0.2.3dbs-69.1) ... Setting up console-tools (1:0.2.3dbs-69.1) ... insserv: warning: script 'rcS.distrib' missing LSB tags and overrides invoke-rc.d: policy-rc.d denied execution of start. Setting up console-common (0.7.85) ... Looking for keymap to install: NONE insserv: warning: script 'rcS.distrib' missing LSB tags and overrides invoke-rc.d: policy-rc.d denied execution of start. Setting up libuuid-perl (0.02-4) ... Setting up linux-base (2.6.32-48squeeze1) ... Setting up linux-image-2.6.32-5-amd64 (2.6.32-48squeeze1) ... Running depmod. Running update-initramfs. update-initramfs: Generating /boot/initrd.img-2.6.32-5-amd64 df: Warning: cannot read table of mounted file systems: No such file or directory W: mdadm: no arrays defined in configuration file. Examining /etc/kernel/postinst.d. run-parts: executing /etc/kernel/postinst.d/initramfs-tools 2.6.32-5-amd64 /boot/vmlinuz-2.6.32-5-amd64 Setting up libcap2 (1:2.19-3) ... . . . Reading task descriptions... install_packages: executing chroot /srv/fai/nfsroot/live/filesystem.dir apt-get clean install_packages: executing chroot /srv/fai/nfsroot/live/filesystem.dir dpkg --configure --pending install_packages: executing chroot /srv/fai/nfsroot/live/filesystem.dir dpkg -C install_packages: executing chroot /srv/fai/nfsroot/live/filesystem.dir apt-get clean install_packages exit code: 0 `/etc/fai/NFSROOT' -> `/srv/fai/nfsroot/live/filesystem.dir/etc/fai/NFSROOT' `/etc/fai/apt' -> `/srv/fai/nfsroot/live/filesystem.dir/etc/fai/apt' `/etc/fai/apt/sources.list' -> `/srv/fai/nfsroot/live/filesystem.dir/etc/fai/apt/sources.list' `/etc/fai/fai.conf' -> `/srv/fai/nfsroot/live/filesystem.dir/etc/fai/fai.conf' `/etc/fai/grub.cfg' -> `/srv/fai/nfsroot/live/filesystem.dir/etc/fai/grub.cfg' `/etc/fai/live.conf' -> `/srv/fai/nfsroot/live/filesystem.dir/etc/fai/live.conf' `/etc/fai/make-fai-nfsroot.conf' -> `/srv/fai/nfsroot/live/filesystem.dir/etc/fai/make-fai-nfsroot.conf' `/etc/fai/menu.lst' -> `/srv/fai/nfsroot/live/filesystem.dir/etc/fai/menu.lst' Shadow passwords are now on. `/srv/fai/nfsroot/live/filesystem.dir/boot/vmlinuz-2.6.32-5-amd64' -> `/srv/tftp/fai/vmlinuz-2.6.32-5-amd64' `/srv/fai/nfsroot/live/filesystem.dir/boot/initrd.img-2.6.32-5-amd64' -> `/srv/tftp/fai/initrd.img-2.6.32-5-amd64' DHCP environment prepared. If you want to use it, you have to enable the dhcpd and the tftp-hpa daemon. Removing 'local diversion of /sbin/discover-modprobe to /sbin/discover-modprobe.distrib' make-fai-nfsroot finished properly. No diversion 'any diversion of /sbin/discover-modprobe', none removed. Log file written to /var/log/fai/make-fai-nfsroot.log Adding line to /etc/exports: /srv/fai/config 192.168.254.102/24(async,ro,no_subtree_check) Adding line to /etc/exports: /srv/fai/nfsroot 192.168.254.102/24(async,ro,no_subtree_check,no_root_squash) Re-exporting directories for NFS kernel daemon.... FAI setup finished. Log file written to /var/log/fai/fai-setup.log
Ein Logfile zur Installation der LIVE Umgebung befindet sich unter /var/log/fai/fai-setup.log
Das Setup hat auch gleich die Einstellungen in der Datei /etc/exports für den NFS Server gemacht. Und ihn neu geladen. Dies sollte dann so ausschauen.
[stextbox id=“bash“]nano /etc/exports[/stextbox]
# /etc/exports: the access control list for filesystems which may be exported # to NFS clients. See exports(5). # # Example for NFSv2 and NFSv3: # /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check) # # Example for NFSv4: # /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check) # /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check) # /srv/fai/config 192.168.254.102/24(async,ro,no_subtree_check) /srv/fai/nfsroot 192.168.254.102/24(async,ro,no_subtree_check,no_root_squash)
Hier muss dann die IP Range angepasst werden damit die Clients auch das NFS mounten können.
/srv/fai/config 192.168.254.0/24(async,ro,no_subtree_check) /srv/fai/nfsroot 192.168.254.0/24(async,ro,no_subtree_check,no_root_squash)
Und anschließend den NFS Server neu starten.
[stextbox id=“bash“]/etc/init.d/nfs-kernel-server restart[/stextbox]
Test Installation eines Clients
Wenn DHCP und DNS eingerichtet sind kann eine Test Installation durchgeführt werden.
Dazu editieren wird die Datei /srv/fai/config/class/50-host-classes und fügen unseren Test Host hinzu.
[stextbox id=“bash“]nano /srv/fai/config/class/50-host-classes[/stextbox]
#! /bin/bash # assign classes hosts # use a list of classes for our demo machine case $HOSTNAME in faiserver) echo "FAIBASE DEMO FAISERVER" ;; test|demohost) echo "FAIBASE DHCPC DEMO" ;; gnomehost) echo "FAIBASE DHCPC DEMO XORG GNOME";; atom*) echo "FAIBASE DHCPC DEMO" ;; bear) echo "FAIBASE DHCPC LVM_XEN_SERVER XEN" ;; puma) echo "FAIBASE DHCPC RAID_XEN_VIRTUAL" ;; *) echo "FAIBASE DHCPC" ;; esac (ifclass I386 || ifclass AMD64) && echo GRUB_PC exit 0
In meinem Fall hab ich die Zeile demohost) mit test| angepasst.
Um den Test Server nun installieren zu lassen muss fai-chboot ausgeführt werden
[stextbox id=“bash“]fai-chboot -IBv test.dmz-home.secretisland.de[/stextbox]
Booting kernel vmlinuz-2.6.32-5-amd64 append initrd=initrd.img-2.6.32-5-amd64 ip=dhcp FAI_FLAGS=verbose,sshd,reboot test.dmz-home.secretisland.de has 192.168.254.200 in hex C0A8FEC8 Writing file /srv/tftp/fai/pxelinux.cfg/C0A8FEC8 for test.dmz-home.secretisland.de
Nun den Test Server starten und auf PXE BOOT einstellen.
Jetzt sollte am Monitor des Test Servers das ganze so ausschauen.
Jetzt sollte noch eingestellt werden das der Server nicht in einer Endlosschleife sich installiert.
Auf dem Server den PXE BOOT ausschalten,
oder die Datei /srv/tftp/fai/pxelinux.cfg/C0A8FEC8 löschen oder umbenennen.
Oder auch eine Routine in FAI definieren die dies am ende macht.
Viel Spaß
Schreibe einen Kommentar