Automatinstallera Debian
Tänkte jag skulle skriva lite här om dom erfarenheter jag skaffat mig när jag stökat runt i mitt hemmalabb. Börjar med hur man automatinstallerar en Debian-maskin.
Vet inte hur det är med er, men har man väl börjat köra virtualisering så är det lätt att man vill ha upp en separat maskin för varje liten sak man pillar med; En för Plex, en för DNS, en för DHCP etc.. Det blir ju lätt lite träligt då att sitta och knappa sig igenom installationsförfarandet varje gång.
Med debian kan man peka ut ett preseed-script som automatiskt installerar och konfar upp maskinen åt dig.
För att få allt det här att fundera krävs följande:
En DHCP-server där du själv kan sätta lite options
En weberver som kan serva statiska filer
Installationsproceduren går till såhär:
Man bootar maskinen från netinstall ison
Man väljer "Automated install"
Installern frågar DHCP-servern efter URL:en till preseed-scriptet
Installern laddar ner preseed-scriptet från webservern
Installern kör igång installationen och gör det som står i preseed-scriptet.
Vi börjar med DHCP-servern. I min miljö finns det en Windows 2012-server som hanterar DNS och DHCP åt mig, men det går bra med en Linux DHCP-server med, det är faktiskt lite enklare att konfigurera det där..
I alla fall. Dra upp DHCP-konsollen i Windows server, högerklicka på din server och välj "Define Vendor Classes...", klicka på "Add..." för att lägga till en ny klass. Kalla den för "Debian" och skriv in "d-i" under ASCII. Klicka på "Close".
Högerklicka på "Policies" och välj "New Policy...". Skriv "Debian" som Policy Name, klicka på Next.
I "Configure conditions..." klicka på Add, välj Vendor Class i Criteria-menyn och Equals i Operator-menyn.
I Value-menyn, välj Debian och klicka på Add, sedan Next
I Configure Settings.. välj Debian i Vendor Class menyn
Under Available options, kryssa i 067
I rutan String value, knappa in URL:en till din webserver och a´namnet på preseed-filen (som vi inte skapat än): Till exempel http://192.168.0.20/files/preseed.cfg
Använd IP-nummer här, inga domännamn.
Klicka på Next, sedan Finish
Vad vi nu har gjort är att skapa en policy som säger åt alla maskiner som presenterar sig hos DHCP-servern som en Debian-installation vart dom kan hitta preseed-scriptet, alla andra maskiner kommer inte att se den här inställningen.
Om du har en Linux DHCP-server så kan du lägga in den här strängen i din konfig:
if substring (option vendor-class-identifier, 0, 3) = "d-i" {
filename "http://192.168.0.20/preseed.cfg";
}
Då ska vi skapa preseed-filen.
Jag börjar med att paste:a in filen jag använder för tillfället, så går vi igenom den lite efteråt:
#### Contents of the preconfiguration file (for jessie)
### Localization
d-i debian-installer/locale string en_US.UTF-8
d-i debian-installer/keymap select se
d-i keymap select se
d-i keyboard-configuration/xkb-keymap select se
### Network configuration
d-i netcfg/choose_interface select auto
d-i netcfg/wireless_wep string
### Mirror settings
d-i mirror/protocol string http
d-i mirror/country string se
d-i mirror/http/hostname string repo.hemma.lokal
d-i mirror/http/directory string /debian
d-i mirror/http/proxy string
# Suite to install.
#d-i mirror/suite string testing
### Account setup
d-i passwd/root-login boolean false
d-i passwd/user-fullname string Scuttle
d-i passwd/username string scuttle
d-i passwd/user-password password hemligtlösenord
d-i passwd/user-password-again password hemligtlösenord
### Clock and time zone setup
d-i clock-setup/utc boolean true
d-i time/zone string Europe/Stockholm
d-i clock-setup/ntp boolean true
### Partitioning
d-i partman-auto/method string lvm
d-i partman-lvm/device_remove_lvm boolean true
d-i partman-md/device_remove_md boolean true
d-i partman-lvm/confirm boolean true
d-i partman-lvm/confirm_nooverwrite boolean true
d-i partman-auto/choose_recipe select atomic
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 partman-md/confirm boolean true
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
### Apt setup
d-i apt-setup/non-free boolean true
d-i apt-setup/contrib boolean true
### Package selection
tasksel tasksel/first multiselect minimal
d-i pkgsel/include string openssh-server rsync unzip mc open-vm-tools ntpdate apt-transport-https curl wget python
d-i pkgsel/upgrade select full-upgrade
### Boot loader installation
d-i grub-installer/only_debian boolean true
d-i grub-installer/with_other_os boolean true
d-i grub-installer/bootdev string default
### Finishing up the installation
d-i finish-install/reboot_in_progress note
Nedan följer filen uppstyckad med lite kommentarer
#### Contents of the preconfiguration file (for jessie)
### Localization
d-i debian-installer/locale string en_US.UTF-8
d-i debian-installer/keymap select se
d-i keymap select se
d-i keyboard-configuration/xkb-keymap select se
Här börjar vi med att ställa in språkinställningarna, svenskt tangentbord etc.
### Network configuration
d-i netcfg/choose_interface select auto
d-i netcfg/wireless_wep string
Nätverksinställningar, säger till den att köra alla interface på DHCP
### Mirror settings
d-i mirror/protocol string http
d-i mirror/country string se
d-i mirror/http/hostname string repo.hemma.lokal
d-i mirror/http/directory string /debian
d-i mirror/http/proxy string
Vart ska jag hämta installationsfilerna? I mitt fall så har jag ett lokalt debian-repo (mer om detta i ett senare inlägg)
# Suite to install.
#d-i mirror/suite string testing
Som default så installerar den stable (jessie för tillfället), men om man vill installera testing är det bara att avkommentera raden här.
### Account setup
d-i passwd/root-login boolean false
d-i passwd/user-fullname string Scuttle
d-i passwd/username string scuttle
d-i passwd/user-password password hemligtlösenord
d-i passwd/user-password-again password hemligtlösenord
Här sätter jag upp konton. Jag börjar med att "stänga av" root-kontot, detta get automatiskt det kontot jag skapar i raderna efter sudo-rättigheter. Lösenordet kan man även ange som en hash om man inte tycker att det är en bra ide att ha sina lösenord i klartext.
### Clock and time zone setup
d-i clock-setup/utc boolean true
d-i time/zone string Europe/Stockholm
d-i clock-setup/ntp boolean true
Svensk tid
### Partitioning
d-i partman-auto/method string lvm
d-i partman-lvm/device_remove_lvm boolean true
d-i partman-md/device_remove_md boolean true
d-i partman-lvm/confirm boolean true
d-i partman-lvm/confirm_nooverwrite boolean true
d-i partman-auto/choose_recipe select atomic
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 partman-md/confirm boolean true
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
Här är "receptet" för diskpartitioneringen. Den blåser alla eventuella partitioner och sätter upp en standard lvm-uppsättining. Här kan man ju göra på många olika sätt, men jag tycker att standardinställningarna funkar fint för mig, den delar inte upp disken i några partitioner utan lägger allt under /. Jag föredrar att skapa en disk med en lite mindre ursprungsdisk och sedan eventuellt haka på fler diskar och utöka med LVM
### Apt setup
d-i apt-setup/non-free boolean true
d-i apt-setup/contrib boolean true
Aktiverar non-free och contrib-repona
### Package selection
tasksel tasksel/first multiselect minimal
d-i pkgsel/include string openssh-server rsync unzip mc open-vm-tools ntpdate apt-transport-https curl wget python
d-i pkgsel/upgrade select full-upgrade
Här säger jag till installeraren att installera en minimal, text-only server, med lite extra småpaket tillagda efteråt
### Boot loader installation
d-i grub-installer/only_debian boolean true
d-i grub-installer/with_other_os boolean true
d-i grub-installer/bootdev string default
Installerar en standard bootloader
### Finishing up the installation
d-i finish-install/reboot_in_progress note
Sen är vi klara
Spara filen på lämpligt ställe på din webserver. Den ska vara åtkomlig från URL:en du angav i DHCP-servern (http://192.168.0.20/files/preseed.cfg)
Boota upp din maskin med netinstall-ison, välj "Advanced options", sen "Automated install". Har du gjort allt rätt så kommer datorn stå och rassla en stund, sen presentera dig med en färdiginstallerad Debian-maskin