CentOS6 VMs mit virt-install kickstarten

Im laufe dieses Artikels werde ich erklären wie ihr CentOS VMs auf einem KVM host kickstarten könnt.

Zunächst erstellen wir ein logisches Volumen als Datenspeicher der VM. Für das Kicksart file in diesem HowTo benötigt iht mindestens 16G Speicherplatz. Wenn ihr das Kickstart file anpasst, kommt ihr aber auch sicherlich mit weniger aus.

  lvcreate -L [Size > 16G]G -n "[Name]" [volGroup]

Nun erstellen wir ein Kickstartfile. Dies hier ist ein File das die Grundsätzliche einrichtung eines CentOS Systems übernimmt.

cat ~/kickstartTemplate.ks

# Install OS instead of upgrade install from "cdrom"
install
cdrom

#Errors make so much more sense in english
lang en_US.UTF-8
#But most of us have a German Keyboard layout
keyboard 'de'

# Network information
network --device=eth0 --bootproto=static --ip=xxx.xxx.xxx.xxx --netmask=xxx.xxx.xxx.xxx --gateway=xxx.xxx.xxx.xxx --nameserver=xxx.xxx.xxx.xxxx --onboot=on --noipv6 -hostname="My Hostname here"
#Default root PW (foobar23)
rootpw --iscrypted $6$b7QQHlJoozlvGHb5$3ga3oe8Xt8Slci7hgkU/vFl.98h0mIPEBrGjZU10X7F8o6C.EiSwh1zprorc1xtQ49b8OEaM07U1UpGoVlF700
#System authorization information
auth --enableshadow --passalgo=sha512
#We want to be able to ssh into this machine afterwards
firewall --service=ssh
#Set SElinux to enforcing. If you have to Disable SElinux you're probably doing it wrong!
selinux --enforcing
  
# System timezone
timezone Europe/Berlin --isUtc
#Zerombr so the Installer doesnt ask if we want to wipe the disks.
zerombr
#Install the Bootloader on the first Virtual disk into the MBR
bootloader --location=mbr --driveorder=vda --append="nomodeset crashkernel=auto rhgb quiet"
  
#Clear the Partition table.
clearpart --all
  
### Disk partitioning information ###
# Single Boot partition 1GB may want to increase this if you do auto updates
part /boot --fstype ext4 --size=1024

#Use the rest of the Disk as Physical Volume for the rest of the System. (min 16G)
part pv.000001 --grow --size=16264
  
#Use the single Physical Volume as the 'sys_vg' volumegroup.
volgroup sys_vg pv.000001
  
# Generate logical volumes for the System. You can expand them as needed later. Consider creating more logvols if needed.
logvol /home  --fstype="ext4" --size=5635 --name=sys_home --vgname=sys_vg
logvol /  --fstype="ext4" --size=10240 --name=sys_root --vgname=sys_vg
logvol swap  --size=512 --name=sys_swap --vgname=sys_vg
  
#Reboot after the installation.
reboot
  
#Install man Add all packages you want to install here.
%packages
man
vim
%end

Nun können wir die VM bereits starten.

virt-install -n "[your name here]" -r [RAM in MB] --description "[Desc]" --initrd-inject=./kickstartTemplate.ks -x "ks=file:/kickstartTemplate.ks ksdevice=eth0" --disk [/path/to/your/logicalVolume]  --os-type=linux --os-variant=virtio26 -w bridge=[Your Bridge],model=virtio --graphics vnc -v --autostart --location=/path/to/your/CentOS/image.iso

Nun könnt ihr mit virt-manager oder einem VNCViewer eurer Wahl der Installation zuschauen. Wenn ihr z.B. bei Hetzner eine VM mit public IP einrichten wollt, achtet rarauf im oberen Befehl diesen Teil zu eurer MAC Adresse ab zu wandeln.

-w bridge=[Your Bridge],model=virtio,mac=XX:XX:XX:XX:XX:XX

Wenn ihr die Macadresse nicht selbst angebt, generiert der Installer selbstständig eine.

Mit “–initrd-inject=” könnt ihr aber nicht nur kickstart Files in den Bootvorgang einschleusen. Auch die Ubuntu & Co. eigenen Formate (Und alle anderen die ins init image passen.) könnt ihr damit einschleusen. Voraussetzung ist jedoch das virt-install eure genutzte Distro kennt. Die Ubuntu Desktop Edition ist z.B. momentan (noch) nicht möglich. Die “Ubuntu Server Edition” funktioniert jedoch. Hierfür folgt bald ein Artikel.