Debiani pxe automaatpaigaldus

Allikas: Kuutõrvaja

Meil on väga palju servereid, mida installida. Vaja oleks automaatselt debian paigaldada ja mõned utiliidid koos temaga. Tundub, et üheks lihtsaks lahenduseks on preseed

Süsteem töötab selliselt, et esmapt boodib server end üles pxe pealt, käivitab kerneli ja tõmbab veebiserverist konfiguratsiooni, mille alusel hakkab läbi http proxy mirroritest pakette tõmbama ja neid kettale installima. Järgmine reboot boodib server võrgu asemel juba kõvakettalt valmis süsteemi.

Preseed.png

Äraseletatult tuleb kõigepealt seadistada Tftp ja Isc-dhcpd_server (eeldame, et need on juba paigaldatud, konfitud ja vajavad vaid täiendamist).

Dhcp konfi lisame vaid ühe enda installimist ootava masina mac aadressi.

 host debian-netboot-test {
   hardware ethernet EA:D7:90:65:00:8F;
   fixed-address 10.0.0.7;
 }

Tõmmata http://www.debian.org/distrib/netinst#netboot). aadressilt netboot.tar.gz ja pakkida selle sisu lahti tftp deemoni töökausta milleks meil /srv/tftpboot.

Tekitada spetsiaalne masina mac nimega konfifail /srv/tftproot/pxelinux.cfg/MAC-AADRESS Võib tekitada muidugi ka eraldi võrgu kus kõigis booditud arvutites käivitatakse debiani paigaldus. Selleks tuleb lihtsalt lubada dhcpst terve võrguvahemik ja pxelinux.cfg alla teha samade parameetrite konfifail nimega default.

default debian-installer/amd64/linux
append auto=true priority=critical vga=normal interface=eth0 initrd=debian-installer/amd64/initrd.gz url=http://10.0.0.2/debian2-conf

Vajadusel võib lisada veel võtmeid. Näiteks see, et ruuterit meil võrgus pole netcfg/no_default_route=true ning määrata kindlaks nimeserveri netcfg/get_nameservers=10.0.0.8. Millegipärast samad parameetrid kerneli konfis töötasid aga http kaudu sikutavas konfifailis mitte. Seejärel tekitame 10.0.0.2 veebiserverisse serveri seadistust sisaldava fail debian2-conf (see võib olla üsna suvalise nimega).

d-i debian-installer/locale string en_US
d-i console-keymaps-at/keymap select us
d-i keyboard-configuration/xkb-keymap select us

d-i netcfg/get_hostname string unassigned-hostname
d-i netcfg/get_hostname seen true
d-i netcfg/get_domain string unassigned-domain
d-i netcfg/get_domain seen true
d-i netcfg/dhcp_timeout string 60

d-i mirror/protocol string http
d-i mirror/country string EE
d-i mirror/http/hostname string ftp.ee.debian.org
d-i mirror/http/directory string /debian/
d-i mirror/http/proxy string http://10.4.4.1:8123/
d-i mirror/suite string jessie
d-i mirror/codename string jessie

d-i clock-setup/utc boolean true
d-i time/zone string Europe/Tallinn

d-i passwd/root-password password parool
d-i passwd/root-password-again password parool
d-i passwd/make-user boolean false

popularity-contest popularity-contest/participate boolean false

d-i partman-auto/disk string /dev/sda
d-i partman-auto/method string regular

# Pick the "everything in one partition" layout
d-i partman-auto/choose_recipe select atomic

# Say yes to all the standard "are you sure you want to delete your
# disk" warnings.
d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true

d-i base-installer/kernel/linux/initramfs-generators string yaird
tasksel tasksel/first multiselect
d-i pkgsel/include string openssh-server rsync ntp
d-i pkgsel/upgrade select full-upgrade

d-i grub-installer/only_debian boolean true
d-i grub-installer/bootdev string /dev/sda

d-i finish-install/reboot_in_progress note

Ja peale masinale tehtud rebooti hakkab installiprotsess käima. See mis versioon debianist peale tuleb määratakse muutujatega

d-i mirror/suite string jessie
d-i mirror/codename string jessie

Kõvaketta muutmiseks kuhu opsüsteemi paigaldatakse tuleb muuta

d-i partman-auto/disk string /dev/sda
d-i grub-installer/bootdev string /dev/sda

proxy serverina sai kasutatud Polipod http://kuutorvaja.eenet.ee/wiki/Polipo

Täiendav skript proxmoxi paigalduseks näide kuidas täiendada installiskripti post skriptiga, mis paigaldab proxmox ve keskkonna.

Selleks, et käivitada veel peale installi lõppu täiendav skript

d-i preseed/late_command string \
in-target wget http://10.4.4.4/jessie-pve-post.sh -O /root/jessie-pve-post.sh; \
in-target bash /root/jessie-pve-post.sh; \
in-target rm /root/jessie-pve-post.sh

Soovides konfigureerida ka näiteks automaatselt postfixi

## postfix preseeding
# General type of configuration? Default:Internet Site
# Choices: No configuration, Internet Site, Internet with smarthost,
#   Satellite system, Local only
postfix postfix/mailname string test-proxmox.eenet.ee
postfix postfix/main_mailer_type        select  Internet with smarthost
# Where should mail for root go, Default:if not set, will spool locally
postfix postfix/root_address    admin@eenet.ee
# SMTP relay host? (blank for none) Default:(none)
postfix postfix/relayhost       string mail.edu.ee
# Force synchronous updates on mail queue?  Default:false
#postfix postfix/chattr  boolean true
# Local networks? Default:"127.0.0.0/8"
# blank uses the postfix default (which is based on the connected subnets)
# Use procmail for local delivery? Defaults to true if /usr/bin/procmail exists
#postfix postfix/procmail        boolean false
# Mailbox size limit Default:0 (unlimited), upstream default is 51200000
postfix postfix/mailbox_limit   string  51200000
# Local address extension character? Default:+
#postfix postfix/recipient_delim string  -
# Internet protocols to use? Default is based on checking if
#  /proc/sys/net/ipv{4,6} exist
# Choices: all, ipv6, ipv4
postfix postfix/protocols       select  ipv4

Probleemid

2015.03.27 seisuga on preseedil probleem paigutada bootivat opsüsteemi nt järjekorras teisele sdb kettale, asi tundub olevat grubi seadistamises. https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=666974 ideeliselt võiks probleemi lahendada

d-i grub-installer/bootdev string /dev/sdb

Puuduvad draiverid

Kuna suletud lähtekoodiga draiverid on debianist välja visatud võib juba paigalduse alguses näha veateadet, et võrgukaarti ei saa kasutada kuna selleks on firmware fail puudu. Selle parandamiseks saab jessiel ja uuematel debianidel tõmmata mitteametliku non-free firmwaresid sisaldava faili

cd /tftpboot/debian-installer/i386
[ -f initrd.gz.orig ] || cp -p initrd.gz initrd.gz.orig
[ -f firmware.cpio.gz ] || wget http://cdimage.debian.org/cdimage/unofficial/non-free/firmware/stable/current/firmware.cpio.gz
cat initrd.gz.orig firmware.cpio.gz > initrd.gz 

Selleks, et firmwared aga ka installitavasse opsüsteemi lisatakse tuleb nende deb failid lisada firmware kataloogi. Näiteks bnx2 firmware deb faili saab urlilt

https://packages.debian.org/wheezy/all/firmware-bnx2/download

Täielikum juhend https://wiki.debian.org/DebianInstaller/NetbootFirmware

Lingid

https://www.debian.org/releases/wheezy/i386/apb.html.en

https://github.com/papamoose/proxmox/blob/master/pxe/preseed/post.sh

http://blog.adrenlinerush.net/?p=204