Sie sind auf Seite 1von 42

Einleitung PXE AutoYaST Kickstart Preseed

Linux Autoinstallation
UnFUG

Azidburn, Luke, Spyk

21. Oktober 2010

1 / 37
Einleitung PXE AutoYaST Kickstart Preseed

Gliederung

1 Einleitung

2 PXE

3 AutoYaST

4 Kickstart

5 Preseed

2 / 37
Einleitung PXE AutoYaST Kickstart Preseed

Gliederung

1 Einleitung

2 PXE

3 AutoYaST

4 Kickstart

5 Preseed

2 / 37
Einleitung PXE AutoYaST Kickstart Preseed

Gliederung

1 Einleitung

2 PXE

3 AutoYaST

4 Kickstart

5 Preseed

2 / 37
Einleitung PXE AutoYaST Kickstart Preseed

Gliederung

1 Einleitung

2 PXE

3 AutoYaST

4 Kickstart

5 Preseed

2 / 37
Einleitung PXE AutoYaST Kickstart Preseed

Gliederung

1 Einleitung

2 PXE

3 AutoYaST

4 Kickstart

5 Preseed

2 / 37
Einleitung PXE AutoYaST Kickstart Preseed

Warum das ganze?

Using kickstart[, AutoYaST or Preseeding], a system administrator



can create a single file containing the answers to all the questions
that would normally be asked during a typical installation.“ [Fed]

Identische Installationen erzeugen


Wiederkehrende Aufgaben automatisieren
Post-Installationsaufwand minimieren

3 / 37
Einleitung PXE AutoYaST Kickstart Preseed

PXE

PXE = Preboot eXecution Environment

Entwickelt von Intel


Aktuelle Version 2.1xx
Booten übers Netzwerk
PXE Environment auf dem Boot-ROM der Netzwerkkarten
PXE-Linux ist Teil des Syslinux Paket
Benötigt normalerweise DHCP + TFTP + pxelinux.0 +
Konfig-File
PXE normalerweise nur textbasierend, aber man es auch ein
bischen graphischer machen :)

4 / 37
Einleitung PXE AutoYaST Kickstart Preseed

PXE-Struktur

<filename root>/
pxelinux.0
pxelinux.cfg/
default
0123456789abcd

5 / 37
Einleitung PXE AutoYaST Kickstart Preseed

PXE-Menu

1 DEFAULT p x e l i n u x . msc / vesamenu . c32


2 PROMPT 0
3 TIMEOUT 3000
4 MENU TITLE IN I n s t a l l a t i o n s Boot Menu
5 INCLUDE p x e l i n u x . msc / d e s i g n
6
7 LABEL d e b i a n
8 menu PASSWD $1$u3RDhzxa$8Ng09KyCV30rkgyoKhOjQ6
9 menu l a b e l ˆWin−P o o l I n s t a l l
10 k e r n e l ubuntu−i n s t a l l e r / i 3 8 6 / l i n u x
11 append vga=n o r m a l i n i t r d =ubuntu−i n s t a l l e r / i 3 8 6 / i n i t r d . gz a u t o=t r u e p r i o r i t y =
c r i t i c a l p r e s e e d / u r l=h t t p : / / 1 4 1 . 2 8 . 6 4 . 1 9 3 / p r e s e e d / winws10 . c f g −−
12
13 LABEL r e s c u e
14 MENU LABEL R e s c u e T o o l s
15 KERNEL p x e l i n u x . msc / vesamenu . c32
16 APPEND r e s c u e / p x e l i n u x . c f g / d e f a u l t

6 / 37
Einleitung PXE AutoYaST Kickstart Preseed

VESA PXE-Menu

7 / 37
Einleitung PXE AutoYaST Kickstart Preseed

AutoYaST

Seit Suse 7.3


XML
XML lässt ich aus einer Referenzinstallation generieren

8 / 37
Einleitung PXE AutoYaST Kickstart Preseed

AutoYaST Konfiguration

9 / 37
Einleitung PXE AutoYaST Kickstart Preseed

Referenz-XML-File erstellen

10 / 37
Einleitung PXE AutoYaST Kickstart Preseed

Skripte

Vorinstallationsskripte
Postinstallationsskripte
Chroot-Skripte
Init-Skripte
Post-Partionierungs-Skripte

11 / 37
Einleitung PXE AutoYaST Kickstart Preseed

Skripte

Shell
Perl
Python

12 / 37
Einleitung PXE AutoYaST Kickstart Preseed

1 <? xml v e r s i o n=" 1.0 " ?>


2 <!DOCTYPE p r o f i l e>
3 < p r o f i l e x m l n s=" http: // www . suse . com /1.0/ yast2ns " x m l n s : c o n f i g=" http: // www . suse .
com /1.0/ configns ">
4 <d e p l o y i m a g e>
5 <i m a g e i n s t a l l a t i o n c o n f i g : t y p e=" boolean ">f a l s e</ i m a g e i n s t a l l a t i o n>
6 </ d e p l o y i m a g e>
7 <s c r i p t s>
8 <p r e−s c r i p t s c o n f i g : t y p e=" list ">
9 <s c r i p t>
10 <debug c o n f i g : t y p e=" boolean ">t r u e</ debug>
11 <f e e d b a c k c o n f i g : t y p e=" boolean ">f a l s e</ f e e d b a c k>
12 <f e e d b a c k t y p e></ f e e d b a c k t y p e>
13 <f i l e n a m e>Pre−S c r i p t</ f i l e n a m e>
14 <i n t e r p r e t e r> s h e l l</ i n t e r p r e t e r>
15 <l o c a t i o n><! [CDATA[ ] ]></ l o c a t i o n>
16 <n o t i f i c a t i o n>Pre−S c r i p t</ n o t i f i c a t i o n>
17 <s o u r c e><! [CDATA[#!/ b i n / s h
18
19 e c h o ” H a l l o ” ] ]></ s o u r c e>
20 </ s c r i p t>
21 </ p r e−s c r i p t s>
22 </ s c r i p t s>
23 </ p r o f i l e>

13 / 37
Einleitung PXE AutoYaST Kickstart Preseed

Autoyast starten

local
... autoyast=autoyast.xml

nfs
... autoyast=nfs://ip/autoyast.xml

14 / 37
Einleitung PXE AutoYaST Kickstart Preseed

Autoyast starten

local
... autoyast=autoyast.xml

nfs
... autoyast=nfs://ip/autoyast.xml

14 / 37
Einleitung PXE AutoYaST Kickstart Preseed

Kickstart

Welche Distributionen werden unterstützt?

Red Hat EL
CentOS
Fedora
Scientific Linux
...

15 / 37
Einleitung PXE AutoYaST Kickstart Preseed

Installationswege

Von welchen Medien kann installiert werden?


Config-Medien
Startmedien Floppy
Floppy CD/DVD
CD/DVD HDD/USB-HDD
HDD/USB-HDD NFS
PXE (FTP)
HTTP

16 / 37
Einleitung PXE AutoYaST Kickstart Preseed

Planung und Vorgehen

1 Konfiguration erstellen
/root/anaconda-ks.cfg einer vorhandenen Installation
/usr/sbin/system-config-kickstart
from scratch oder anhand von Beispielen
2 Bootmedium erstellen und kickstart-Datei (z.B. ks.cfg)
verfügbar machen
3 Installationsbaum erstellen (bzw. einen vorhanden benutzen)
http://141.28.78.100/mirrors/centos/VERS/os/ARCH/
CD/DVD verwenden bzw. kopieren
ggf. (zusätzlich) createrepo
4 Testen

17 / 37
Einleitung PXE AutoYaST Kickstart Preseed

/root/anaconda-ks.cfg
1 # Kickstart file a u t o m a t i c a l l y g e n e r a t e d by a n a c o n d a .
2
3 install
4 cdrom
5 l a n g en US . UTF−8
6 k e y b o a r d de
7 n e t w o r k −−d e v i c e e t h 0 −−b o o t p r o t o s t a t i c −−i p 1 0 . 1 0 . 1 0 . 3 −−netmask 2 5 5 . 2 5 5 . 2 5 5 . 0
−−g a t e w a y −−hostname u n f u g
8 r o o t p w −−i s c r y p t e d $1$gkfMxYUL$5B06vvqfo3V . QwrkWBIKy1
9 f i r e w a l l −−e n a b l e d −−p o r t =22: t c p
10 a u t h c o n f i g −−e n a b l e s h a d o w −−e n a bl e m d 5
11 s e l i n u x −−e n f o r c i n g
12 t i m e z o n e −−u t c E u r o p e / B e r l i n
13 b o o t l o a d e r −−l o c a t i o n=mbr −−d r i v e o r d e r=s d a
14 # The f o l l o w i n g i s t h e p a r t i t i o n i n f o r m a t i o n you r e q u e s t e d
15 #. . .
16 #c l e a r p a r t −−a l l −−d r i v e s=s d a
17 #p a r t / b o o t −−f s t y p e e x t 3 −−s i z e =100 −−o n d i s k=s d a
18 #p a r t pv . 2 −−s i z e =0 −−grow −−o n d i s k=s d a
19 #v o l g r o u p V o l G r o u p 0 0 −−p e s i z e =32768 pv . 2
20 #l o g v o l swap −−f s t y p e swap −−name=Log Vo l01 −−vgname=V o l G r o u p 0 0 −−s i z e =384 −−grow
−−m a x s i z e =768
21 #l o g v o l / −−f s t y p e e x t 3 −−name=Lo gVo l0 0 −−vgname=V o l G r o u p 0 0 −−s i z e =1024 −−grow
22
23 %p a c k a g e s
24 @base
25 vim

18 / 37
Einleitung PXE AutoYaST Kickstart Preseed

system-config-kickstart

19 / 37
Einleitung PXE AutoYaST Kickstart Preseed

Sections

%pre
Am Ende der ks-Datei (srsly[Fed])
Netzwerk (ohne Namensauflösung) verfügbar
Interpreter normalerweise /bin/sh, andere möglich
%post
Alles was nach der Installation zu erledigen ist
Benutzer anlegen
Konfigurationen anpassen
SSH-Keys hinterlegen
Logging via %post --log=/root/my-post-log
Läuft in einer chroot-Umgebung (/mnt/sysimage)
%packages
Pakete (vim, emacs, . . . )
Paketgruppen (@java-development, @base, . . . )

20 / 37
Einleitung PXE AutoYaST Kickstart Preseed

Installation

linux ...
ks
versucht, Pfad zur ks-Datei via DHCP zu bekommen
alternativ
nfs:DHCPServer:/kickstart/CLIENTIP-kickstart
ks=floppy
ks=floppy:/<path>
ks=cdrom:/<path>
ks=hd:<device>:/<file>
ks=file:/<file> (ohne Mountversuch)
ks=nfs:<server>:/<path>
ks=http://<server>/<path>

21 / 37
Einleitung PXE AutoYaST Kickstart Preseed

Exkurs Remastering

boot.iso von Installations-Medium bzw. -Mirror im Pfad


images loopback-mounten
Installationsbaum kopieren
isolinux/isolinux.cfg anpassen
Image mit mkisofs erstellen 1

mkisofs -R -J -T -no-emul-boot -boot-load-size 4


-boot-info-table -V ’UnFUG Kickstarter’ -b
isolinux/isolinux.bin -c isolinux/boot.cat -o
unfug.iso PATHTOINSTALLTREE

1
http://www.hs-furtwangen.de/~kalliesl/documents/unfug_
kickstart-demo_centos5.iso
22 / 37
Einleitung PXE AutoYaST Kickstart Preseed

linux ks=cdrom:/ks.cfg

23 / 37
Einleitung PXE AutoYaST Kickstart Preseed

Tipps & Tricks

Installation via VNC überwachen


vnc in der ks-Datei startet für die (grafische) Installation
einen VNC-Server [Hat, Kapitel 28.10.].
vncconnect=<host>[:<port>] verbindet sich zu einem
VNC-Client (listening-mode).
vncpassword=<password> gibt ein (optionales) Passwort für
die Verbindung vor.

24 / 37
Einleitung PXE AutoYaST Kickstart Preseed

Tipps & Tricks

TTYs
Alt-F1 Installationsdialog im Textmodus
Alt-F2 Shell-Promt
Alt-F3 Installationslog
Alt-F4 Systemlog
Alt-F5 Alle anderen Meldungen
Alt-F7 Installationsdialog im grafischen Modus

[Cen]

25 / 37
Einleitung PXE AutoYaST Kickstart Preseed

Preseed

Textfile
Einträge nach dem Schema “<Paket> <schlüssel> <typ>
<Wert>”

Welche Distributionen werden unterstützt?

Debian
(X)ubuntu
...

26 / 37
Einleitung PXE AutoYaST Kickstart Preseed

Installation

Installation method initrd file network


CD/DVD yes yes yes
netboot yes no yes
HDD,USB etc yes yes yes

Config lokal
.. preseed/file=<file>

Configs übers Netz


.. preseed/url=http://<url>
.. preseed/url=ftp://<url>

27 / 37
Einleitung PXE AutoYaST Kickstart Preseed

Erstellen von Preseed-Dateien

händisch
Lieblings Text-Editor nutzen und Preseed-Datei editieren

debconf
1 Debian installieren

2 debconf-get-selection --install > file


3 debconf-get-selection > file2
4 Dateien mergen und editieren

28 / 37
Einleitung PXE AutoYaST Kickstart Preseed

Lokalisierung

1 d−i d e b i a n−i n s t a l l e r / l o c a l e s t r i n g de DE
2 d−i c o n s o l e −t o o l s / a r c h s s t r i n g a t
3 d−i c o n s o l e −keymaps−a t / keymap s e l e c t de−l a t i n 1 −n o d e a d k e y s
4 d−i c o n s o l e −s e t u p / a s k d e t e c t b o o l e a n t r u e
5 d−i c o n s o l e −s e t u p / m o d e l c o d e s t r i n g pc105
6 d−i c o n s o l e −s e t u p / l a y o u t c o d e s t r i n g de
7 d−i c o n s o l e −s e t u p / l a y o u t s e l e c t Germany

29 / 37
Einleitung PXE AutoYaST Kickstart Preseed

Netwerkkonfiguration

1 d−i netcfg / c h o o s e i n t e r f a c e s e l e c t eth0


2 d−i netcfg / dhcp timeout s t r i n g 1
3 d−i netcfg / disable dhcp boolean true
4 d−i netcfg / d h c p f a i l e d note
5 d−i n e t c f g / dh c p o pt io n s s e l e c t Configure network manually
6 d−i netcfg / get nameservers string 141.28.2.19
7 d−i netcfg / get netmask s t r i n g 255.255.255.0
8 d−i netcfg / get gateway s t r i n g 213.95.27.138
9 d−i netcfg / c o n f i r m s t a t i c boolean true
10 d−i n e t c f g / get domain s t r i n g unfug . org
11
12 d−i c l o c k −s e t u p / u t c b o o l e a n f a l s e
13 d−i time / zone s t r i n g Europe / B e r l i n
14 d−i c l o c k −s e t u p / n t p b o o l e a n t r u e
15 d−i c l o c k −s e t u p / ntp−s e r v e r s t r i n g 1 4 1 . 2 8 . 7 8 . 8 0

30 / 37
Einleitung PXE AutoYaST Kickstart Preseed

Paketquellen

1 d−i mirror / protocol s t r i n g http


2 d−i m i r r o r / c o u n t r y s t r i n g manual
3 d−i m i r r o r / h t t p / hostname s t r i n g m i r r o r . i n f o r m a t i k . hs−f u r t w a n g e n . de
4 d−i m i r r o r / h t t p / d i r e c t o r y s t r i n g / m i r r o r s / ubuntu
5 d−i mirror / http / proxy s t r i n g
6
7 d−i apt−s e t u p / r e s t r i c t e d b o o l e a n t r u e
8 d−i apt−s e t u p / u n i v e r s e b o o l e a n t r u e
9 d−i apt−s e t u p / b a c k p o r t s b o o l e a n f a l s e
10 d−i apt−s e t u p / u s e m i r r o r b o o l e a n t r u e
11 d−i apt−s e t u p / s e r v i c e s −s e l e c t m u l t i s e l e c t s e c u r i t y
12 d−i apt−s e t u p / s e c u r i t y h o s t s t r i n g m i r r o r . i n f o r m a t i k . hs−f u r t w a n g e n . de
13 d−i apt−s e t u p / s e c u r i t y p a t h s t r i n g / m i r r o r s / ubuntu

31 / 37
Einleitung PXE AutoYaST Kickstart Preseed

Partitionierung

1 d−i partman−a u t o / i n i t a u t o m a t i c a l l y p a r t i t i o n s e l e c t b i g g e s t f r e e
2 d−i partman−a u t o / d i s k s t r i n g / d ev / s d a
3 d−i partman−a u t o / e x p e r t r e c i p e s t r i n g
4 boot−r o o t : :
5 20000 10000 33000 e x t 3
6 $primary{ } $bootable{ }
7 method{ f o r m a t } f o r m a t { }
8 u s e f i l e s y s t e m { } f i l e s y s t e m { ext3 }
9 mountpoint{ / }
10
11 1024 512 4096 l i n u x −swap
12 method{ swap } f o r m a t { }
13 .
14 d−i partman / c o n f i r m w r i t e n e w l a b e l b o o l e a n t r u e
15 d−i partman / c h o o s e p a r t i t i o n s e l e c t f i n i s h
16 d−i partman−a u t o / c o n f i r m boolean true
17 d−i partman / c o n f i r m b o o l e a n t r u e

32 / 37
Einleitung PXE AutoYaST Kickstart Preseed

Paket- und Userverwaltung

1 d−i passwd / r o o t−l o g i n b o o l e a n t r u e


2 d−i passwd /make−u s e r b o o l e a n f a l s e
3 d−i passwd / r o o t−p a s s w o r d−c r y p t e d p a s s w o r d $1$u3RDhzxa$8Ng09KyCV30rkgyoKhOjQ6
4 d−i u s e r−s e t u p / e n c r y p t −home b o o l e a n f a l s e
5 t a s k s e l t a s k s e l / f i r s t m u l t i s e l e c t ubuntu−d e s k t o p
6 d−i p k g s e l / i n c l u d e s t r i n g o p e n s s h−s e r v e r b u i l d −e s s e n t i a l
7 d−i p k g s e l / l a n g u a g e−p a c k s m u l t i s e l e c t de
8 d−i p k g s e l / u p d a t e−p o l i c y s e l e c t none
9 p o p u l a r i t y −c o n t e s t p o p u l a r i t y −c o n t e s t / p a r t i c i p a t e b o o l e a n f a l s e

33 / 37
Einleitung PXE AutoYaST Kickstart Preseed

Bootloader, Finishing, Skripte

1 d−i grub−i n s t a l l e r / s k i p b o o l e a n f a l s e
2 d−i l i l o −i n s t a l l e r / s k i p b o o l e a n t r u e
3 d−i grub−i n s t a l l e r / o n l y d e b i a n b o o l e a n f a l s e
4 d−i grub−i n s t a l l e r / w i t h o t h e r o s b o o l e a n t r u e
5 d−i grub−i n s t a l l e r / b o o t d e v s t r i n g / d ev / s d a
6 d−i f i n i s h −i n s t a l l / r e b o o t i n p r o g r e s s n o t e
7 d−i cdrom−d e t e c t / e j e c t b o o l e a n t r u e
8
9 d−i p r e s e e d / l a t e c o m m a n d s t r i n g cd / t a r g e t /tmp ; wget h t t p : / / 2 1 3 . 9 5 . 2 7 . 1 3 8 /
winws10 / p o s t i n s t a l l . s h ; chmod +x / t a r g e t /tmp/ p o s t i n s t a l l . s h ; i n−t a r g e t /tmp/
p o s t i n s t a l l . sh

34 / 37
Einleitung PXE AutoYaST Kickstart Preseed

Preseed anderer Pakete

1 x s e r v e r −x o r g x s e r v e r −x o r g / a u t o d e t e c t m o n i t o r b o o l e a n t r u e
2 x s e r v e r −x o r g x s e r v e r −x o r g / c o n f i g / m o n i t o r / s e l e c t i o n −method s e l e c t medium
3 x s e r v e r −x o r g x s e r v e r −x o r g / c o n f i g / m o n i t o r /mode−l i s t s e l e c t 1280 x1024 @ 60 Hz
4
5 sun−j a v a 6−b i n s h a r e d / a c c e p t e d−sun−d l j −v1−1 boolean true
6 sun−j a v a 6−j d k s h a r e d / a c c e p t e d−sun−d l j −v1−1 boolean true
7 sun−j a v a 6−j r e s h a r e d / a c c e p t e d−sun−d l j −v1−1 boolean true

35 / 37
Einleitung PXE AutoYaST Kickstart Preseed

Quellen I

CentOS.
Tips and tricks for anaconda and kickstart.
http://wiki.centos.org/TipsAndTricks/KickStart.
Debian.
Preseed dokumentation.
http://d-i.alioth.debian.org/manual/en.i386/apb.html.
FedoraProject.
Anaconda/kickstart.
http://fedoraproject.org/wiki/Anaconda/Kickstart.
Red Hat.
Red hat enterprise linux installation guide.
http://centos.org/docs/5/html/Installation Guide-en-US/.

36 / 37
Einleitung PXE AutoYaST Kickstart Preseed

Backup

Kickstart
network --device=eth0 --bootproto=query (ask for
config)
Installationsverwaltung
Red Hat Network2
Red Hat Satellite3 und Spacewalk4
Cobbler5

2
https://rhn.redhat.com/help/about.pxt
3
http://www.redhat.com/red_hat_network/
4
http://spacewalk.redhat.com/
5
https://fedorahosted.org/cobbler/
37 / 37