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.