Automatisierung der Installation von Citrix Xenserver

© Charles Taylor, 123RF

Automatik

Mithilfe weniger Basistechnologien lässt sich auch bei der Installation des kommerziellen Xenserver-Hypervisors ein guter Automatisierungsgrad erreichen.
Egal, um welchen Dienst es sich dreht, den Benutzern geht es immer zu langsam. Der Schwerpunkt des ADMIN-Magazins 05/2011 verrät, mit welchen Tools man ... (mehr)

In hochvirtualisierten Umgebungen wird oft viel Aufwand für die automatisierte Installation und Konfiguration virtueller Maschinen betrieben. So genannte Konfigurationsmanagement-Tools wie FAI, Puppet oder Chef haben dabei diese Aufgabe in den letzten Jahre grundlegend verändert. Vorbei sind die Zeiten der "ssh'schen for-Schleife", heute findet die Konfiguration von Servern hauptsächlich im zentralen Subversion- oder Git-Repository statt.

Dagegen hat sich bei der Installation und Konfiguration kommerzieller Hypervisoren auf technischer Ebene wenig getan. Dennoch lässt sich auch hier mittels weniger Infrastrukturdienste ein hoher Automatisierungsgrad erreichen. Dieser Artikel erklärt, wie Sie Citrix Xenserver automatisch über einen Server verteilen.

Das Ziel, die Serverinstallation ohne Benutzerinteraktion abzuschließen, lässt sich beim Xenserver durch mehrere Dienste und Protokolle erreichen. Die notwendigen Elemente hierfür sind ein DHCP-Server zur automatischen Netzwerkkonfiguration des Clients sowie ein TFTP-Server zur Auslieferung eines minimalen Kernels und der Installationsroutine.

Zusätzlich wird ein NFS-, FTP- oder HTTP-Server vorausgesetzt, der die zu installierenden Dateien bereitstellt. Hierfür ist ein Xenserver-Installationsmedium erforderlich, das es auf der Xenserver Website [1] gibt. Dabei ist es unerheblich, ob die einzelnen Dienste auf unterschiedliche Server im Netzwerk verteilt oder alle Dienste zentral von einem Server aus bereitgestellt werden.

Grundvoraussetzung auf Hardware-Ebene ist eine PXE-bootfähige (Preboot Execution Environment [2]) Netzwerkkarte oder ein Onboard-Netzwerkinterface, bei dem der PXE-Code bereits Bestandteil des System-BIOS ist. Dies ermöglicht es dem Server, beim Starten eine IP-Adresse vom DHCP-Server zu beziehen und im Anschluss von einer externen Ressource zu booten (Abbildung 1).

Abbildung 1: Schematische Darstellung der Kommunikation zwischen PXE Client und Server.

DHCP-Server-Installation

Als DHCP-Server bietet sich der ISC DHCP-Server [3] an, der sich auf RPM-basierten Distributionen mittels »rpm -hvi dhcp« oder auf Debian-Distributionen via »apt-get install dhcp3-server« installieren lässt. Das zu bindende Interface für den DHCP-Server wird bei Red Hat und dessen Derivaten durch »/etc/sysconfig/dhcpd« bestimmt. Debian und Ubuntu fragen bei der Installation explizit nach. Dort befindet sich die entsprechende Konfiguration unter »/etc/default/dhcp3-server« .

Die Konfigurationparameter des Servers stehen in der Datei »/etc/dhcp/dhcpd.conf« respektive »/etc/dhcp3/dhcpd.conf« . Im Hinblick auf den angestrebten PXE-Boot sind die folgenden drei Direktiven wichtig:

  • »allow bootp« sorgt für die notwendige Unterstützung des Bootstrap-Protokolls.
  • »next-server« definiert den im Bootstrap-Prozess als Nächstes zu kontaktierenden Server, der die initiale Datei zum Booten ausliefert.
  • »filename« gibt den Dateinamen des zu bootenden Kernels an.

Aufgrund der Komplexität der DHCP-Konfiguration und der Abhängigkeit von der Netzwerkstruktur ist es schwierig, ein Patentrezept zur Konfiguration zu geben. Beispielsweise wäre es möglich, die PXE-bootenden Clients zu gruppieren oder in eine eigene Klasse auszulagern wie in Listing 1 beschrieben.

Listing 1

PXE-Klasse

 

Klassen sind beim DHCP-Server vor allem in heterogenen Netzwerken von Vorteil. In homogenen Umgebungen, in denen der DHCP-Server zudem mehrere IP-Adressbereiche und VLANs verwaltet, bietet es sich an, die Konfiguration in »shared-network« -Blöcke zu unterteilen (Listing 2). Hier gilt es, die Konfiguration global zu strukturieren und die »next-server« -Direktive in den entsprechenden Block für alle Hosts des gleichen Netzes unterzubringen.

Listing 2

Shared Network

 

Die Konfiguration-Syntax können Sie mit

/usr/sbin/[dhcp|dhcp3] -t -cf /etc/[dhcp|dhcp3]/dhcpd.conf

testen. Kontrolle über den Dämon ermöglicht

service dhcp [start|stop|restart]

oder

/etc/init.d/[dhcp|dhcp3-server] [start|stop|restart]

Für das Einrichten des TFTP-Servers [4] sind zwei Software-Pakete erforderlich. Einerseits der TFTP-Server selbst, den der Befehl »rpm -hvi tftp-server« respektive »apt-get install tftpd« installiert. Andererseits Syslinux, eine Sammlung von Bootloadern, die sich über »rpm -hvi syslinux« oder »apt-get install syslinux« installieren lässt.

Die Konfiguration des TFTP-Daemons befindet sich per default unter »inet.d« beziehungsweise »xinet.d« und muss zunächst mittels »disable = no« in »/etc/xinetd.d/tftp« aktiviert werden. Der Parameter »-s« informiert den Dienst über das bereitzustellende Verzeichnis. Ein entsprechender Eintrag der »/etc/inetd.conf« unter Debian sähe beispielsweise wie in Listing 3 aus.

Listing 3

/etc/inetd.conf

 

Mittels »service xinetd [start|stop|restart]« respektive »/etc/init.d/xinetd [start|stop|restart]« oder »/etc/init.d/tftpd-hpa [start|stop|reload]« , wenn der »tftpd« als eigenständiger Dienst konfiguriert ist, lässt sich der Dämon starten und stoppen. Das grundlegende Setup der benötigten Dienste ist somit abgeschlossen.

Installationsmedien

Zur Xenserver-Installation fehlen nun noch die passenden Dateien. Zuerst erstellen Sie die Verzeichnisstruktur und legen im Hinblick auf mögliche Software-Aktualisierungen passende Symlinks an. Im Anschluss mounten Sie das Image. Zuletzt kopieren Sie die benötigten Installationsdateien vom gemounteten Image in das Verzeichnis. Listing 4 zeigt die dafür nötigen Schritte.

Listing 4

Installationsdateien bereitstellen

 

Liegen die Daten im Verzeichnis, müssen Sie sich jetzt lediglich noch um deren Erreichbarkeit kümmern. Am einfachsten geschieht dies mittels HTTP, aber auch NFS oder FTP sind gangbare Wege.

Zwecks initalem Test können Sie zu Pythons »SimpleHTTPServer« greifen und ihn im bereitzustellenden Verzeichnis auf Port 80 starten:

cd /srv/install-media/xenserver
nohup python -m SimpleHTTPServer 80 &

Für eine dauerhafte Installation bietet sich beispielsweise der Apache-Webserver an. Hierzu konfigurieren Sie einen neuen Vhost, der die entsprechenden Ressourcen unter einer URL wie »http://install-xenserver.example.com« bereitstellt. Eine Beispielkonfiguration zeigt Listing 5.

Listing 5

Apache Vhost

 

Damit die Xenserver-Installation überhaupt startet, müssen Sie die beiden Dateien »mboot.c32« und »pxelinux.0« aus »/usr/lib/syslinux« in das Verzeichnis »/srv/tftpboot« kopieren. Im Anschluss erstellen Sie ein neues Verzeichnis namens »xenserver-5.6.1sp2« im »tftpboot« -Verzeichnis, in das Sie die Dateien »install.img« , »vmlinuz« und »boot/xen.gz« aus dem Wurzelverzeichnis des Xenserver-Installationsmediums kopieren.

In »/src/tftpboot« erstellen Sie danach ein weiteres Verzeichnis namens »pxelinux.cfg« , in dem die Konfiguration für den PXE-Boot ihren Platz findet. Der Einfachheit halber nennen Sie die Konfigurationsdatei »default« . Mit der Konfiguration aus Listing 6 wäre jetzt bereits eine manuelle Installation ohne Einlegen des Installationsmediums möglich.

Listing 6

PXE-Konfiguration für manuelle Installation

 

Um die Installation vollständig zu automatisieren, fehlt nur ein weiteres Element: das so genannte Answer File. Diese Datei enthält alle Konfigurationsparameter im XML-Format, die andernfalls manuell eingegeben werden müssten. Sie wird wie die anderen zur Installation gehörenden Dateien auch im Document Root des Webservers gespeichert. Listing 7 zeigt eine Minimalausführung des Answer File. Eine Übersicht der möglichen Konfigurationsparameter liefert die Tabelle 1.

Listing 7

Rudimentäres Answer File zur automatisierten Installation

 

Wenn Sie das Answer File geschrieben haben und es vom Webserver ausgeliefert wird, müssen Sie nur noch die PXE-Konfiguration in »/srv/tftpboot/pxelinux.cfg/default« anpassen. Wie in Listing 8 zu sehen ist, referenziert es nun das Answer File und sorgt für eine vollständig automatisierte Installation des Xenserver.

Listing 8

Vollautomatische Installation

 

comments powered by Disqus

Artikel der Woche

Eigene Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Google+

Ausgabe /2019