Eine manuelle Installation von ESXi über das Installer-ISO führt nur zu einem rudimentär konfigurierten Host, den der Admin dann nachträglich anpassen muss. Dagegen kann er in einer Kickstart-Antwortdatei alle möglichen Einstellungen vorab festlegen, und diese werden dann beim Setup automatisch gesetzt.
Auch wenn der ESXi-Kernel gewisse Ähnlichkeiten mit Linux aufweist, was unter anderem an der Integration von Busybox liegt, so ist er dennoch eine Eigenentwicklung von VMware. Ein netter Nebeneffekt der Linux-Verwandtschaft besteht darin, dass sich Kickstart für ESXi nutzen lässt.
Alternative zu Auto-Deploy und Host-Profilen
Ein interaktives Einrichten von ESXi vom Installationsmedium konfiguriert nur das root-Password, das Tastatur-Layout und das Management-Netzwerk per DHCP. Die weitere Anpassung erfolgt dann von Hand über die DCUI oder am Host-Client. Möchte man nicht nur die Basisinstallation, sondern den kompletten ESXi-Build automatisieren, dann bieten sich dafür Auto-Deploy und Host-Profile an, was aber mindestens eine Enterprise-Plus-Host-Lizenz und einen einsatzbereiten vCenter Server verlangt.
Alternativ fasst man eine Kickstart-Installation ins Auge, die sich auch mit automatisierter Software-Verteilung verbinden lässt. Uns sie lässt sich sogar mit dem kostenlosen vSphere Hypervisor nutzen.
Kickstart-Workflow
Zu den Vorteilen einer unbeaufsichtigten Installation über das Netzwerk gehört zum Beispiel, dass Admins ihre ESXi-Konfiguration relativ einfach anpassen können, indem sie die Kickstart-Datei bearbeiten. Voraussetzung dafür ist lediglich, dass der Host zur Zeit der Installation mit dem Netzwerk verbunden ist.
Die unbeaufsichtigte Netzwerkinstallation via Kickstart umfasst ganz allgemein folgende Schritte:
- Kickstart-Datei erstellen
- Speichern der Kickstart-Datei auf einem NFS- oder HTTP-Server
- Anpassen des Boot-Managers derart, dass dieser auf einem NFS-Server nach der Kickstart-Datei sucht
- Booten vom ISO-Abbild unter Einbeziehung der Kickstart-Datei und beobachten der vollständigen Installation
Erstellen der Kickstart-Datei
Eine Kickstart-Datei ist eine Textdatei mit Angaben zur Konfiguration, wie sie normalerweise für Linux-Installationen verwendet wird. Sie trägt stets die Erweiterung .cfg und ist recht einfach zu lesen und zu erstellen.
Das folgende einfache Beispiel überschreibt sämtliche vorhandenen Partitionen für das ESXi-Betriebssystem, setzt das root-Passwort und versieht das Management-Netzwerk mit einer statischen IP-Konfiguration.
Danach folgt ein erster Reboot. Im weiteren Verlauf wird ein Standard-Switch mit 4 Uplink-Adaptern angelegt und die DNS-Konfiguration mit dem Hinzufügen von zwei Name-Servern ergänzt.
#Accept the VMware End User License Agreement
vmaccepteula
# clear partitions and install
clearpart –firstdisk –overwritevmfs
install –firstdisk –overwritevmfs
#set the root password
rootpw geheim
#Host Network Settings
network –bootproto=static –addvmportgroup=1 –ip=192.168.1.77 –netmask=255.255.255.0 –gateway=192.168.1.254 –nameserver=192.168.0.12 –hostname=hv100
reboot
#Firstboot section 1
%firstboot –interpreter=busybox
sleep 30
#Enter Maintenance mode
vim-cmd hostsvc/maintenance_mode_enter
#suppress Shell Warning
esxcli system settings advanced set -o /UserVars/SuppressShellWarning -i 1
esxcli system settings advanced set -o /UserVars/ESXiShellTimeOut -i 1
#Add DNS Nameservers to /etc/resolv.conf
cat > /etc/resolv.conf << \DNS
nameserver 192.168.0.12
nameserver 8.8.8.8
DNS
#VSwitch Configurations
esxcli network vswitch standard add –vswitch-name=vSwitch0 –ports=24
esxcli network vswitch standard uplink add –uplink-name=vmnic0 –vswitch-name=vSwitch0
esxcli network vswitch standard uplink add –uplink-name=vmnic1 –vswitch-name=vSwitch0
esxcli network vswitch standard uplink add –uplink-name=vmnic2 –vswitch-name=vSwitch0
esxcli network vswitch standard uplink add –uplink-name=vmnic3 –vswitch-name=vSwitch0
esxcli network vswitch standard policy failover set –active-uplinks=vmnic0,vmnic1,vmnic2,vmnic3 –vswitch-name=vSwitch0
esxcli network vswitch standard portgroup policy failover set –portgroup-name=“Management Network“ –active-uplinks=vmnic0,vmnic1,vmnic2,vmnic3
esxcli network vswitch standard portgroup add –portgroup-name=hv100-prod0 –vswitch-name=vSwitch0
esxcli network vswitch standard portgroup remove –portgroup-name=“VM Network“ –vswitch-name=vSwitch0
#Firstboot Section 2
%firstboot –interpreter=busybox
#Disable IPv6
esxcli network ip set –ipv6-enabled=false
#Reboot
sleep 30
reboot
Die hier verwendeten IP- und Netzwerkeinstellungen sind natürlich den eigenen Gegebenheiten anzupassen. Als Versuchskaninchen verwende ich einen virtualisierten ESXi-Hosts mit 4 Netzwerkkarten.
Nun speichere ich den obigen Demo-Code in einer Text-Datei mit dem Namen „kickstart-hv100.cfg“ (der Name ist frei wählbar) und lege diese auf einer NFS-Freigabe ab. Es wäre aber auch möglich, sie auf einem USB-Stick, einer CD-ROM bzw. auf dem verwendeten Installationsmedium selbst zu platzieren.
Dass das root-Password momentan noch im Klartext in der Kickstart-Datei steht, ist natürlich ein Sicherheitsrisiko und nur der Tatsache geschuldet, dass ich mich vorerst auf den eigentlichen Workflow konzentriere.
Nun füge ich dem ESXi-Host ein virtuelles CD-Laufwerk hinzu und lege die ESXi-Installations-ISO ein.
Direkt nach der initialen Boot-Sequenz drücke ich dann, wie unten rechts angezeigt, Shift + O, was ein direktes Bearbeiten der Boot-Optionen erlaubt, um die Kickstart-Datei für die Installation angeben zu können. Hier ersetze ich den Standard-Eintrag
>cdromBoot runease1
durch
>netdevice=vmnic0 bootproto=dhcp ks=nfs:\\<Pfad zur Kickstart-Datei>
in meinem konkreten Fall also
>netdevice=vmnic0 bootproto=dhcp ks=nfs:\\10.0.0.1\volume1\NAS\ISO\kickstart-hv100.cfg