Soll nun stattdessen das Gastsystem das DNS-Update initiieren, hängt man den Aufruf dazu am besten ebenfalls in ein Startup-Skript ein, der Einfachheit halber zum Beispiel in
»/etc/rc.local
«
. Im Gastsystem den gesetzten Hostnamen zu ermitteln, ist mit dem Befehl
»hostname
«
trivial. Die IP-Adresse lässt sich zwar mit
»ip addr show dev eth0
«
oder
»ifconfig eth0
«
leicht ausgeben, sie aus dem Datenwust herauszufiltern, erfordert jedoch noch ein wenig Textverarbeitung.
In eine Falle kann man hier übrigens leicht dank der mittlerweile auch auf der Konsole eingezogenen Lokalisierung tappen, die auf Deutsch statt
»inet addr
«
lieber
»inet Adresse
«
ausgibt. Um sicherzugehen, sollte man dem Aufruf also die Standard-Locale voranstellen. Der Aufruf des Update-Skripts vom Gastsystem aus, sieht damit so aus wie in
Listing 2
.
Listing 2
rc.local
Bleibt auf Host-Seite noch eben dieses Skript zu schreiben, das der Gast aufruft und das die PowerDNS-Datenbank aktualisiert. Natürlich muss man dazu die Struktur der Tabelle kennen und überprüfen, ob der entsprechende Eintrag schon existiert. Der Rest ist jedoch, zum Beispiel in Perl, schnell geschrieben, wie
Listing 3
zeigt. Der Domain-Name
»my.org
«
ist hierbei fest einkodiert, alternativ könnte man ihn auch übergeben, müsste dazu aber die Datenbankaufrufe anpassen. Das Ergebnis der dynamischen Updates kann man, wenn alles gut gegangen ist, im Poweradmin-Frontend bewundern (
Abbildung 2
).
Listing 3
update-dns
Um sich per Hostnamen einloggen zu können, müssen alle beteiligten Systeme, der Host wie auch die Gäste, den selbst konfigurierten Nameserver verwenden. Die dazu nötige Datei
»/etc/resolv.conf
«
lässt sich mit den oben beschriebenen Methoden in den Gast-Systemen installieren. Hierbei erweist es sich als Schwierigkeit, dass beim Booten per DHCP die Datei automatisch überschrieben wird. Das zu verhindern, ist schwieriger als man denkt, denn die vorgeschlagene Einstellung
»PEERDNS=no
«
in
»/etc/sysconfig/network-scripts/ifcfg-eth0
«
funktioniert nicht in allen Fällen. Alternativ soll es laut verschiedenen Blogs funktionieren, in
»/etc/dhcp/dhclient-enter-hooks
«
die beiden zuständigen Funktionen zu überschreiben:
make_resolv_conf(){ exit 0 } change_resolv_conf(){ exit 0 }
Versagt auch diese Methode, bleibt als letzter Ausweg wohl nur noch übrig, das DHCP-Client-Skript
»/sbin/dhclient-script
«
direkt zu editieren.
Zu verbessern gibt es bei der hier vorgestellten Lösung noch vieles, angefangen von der Namensverwaltung für virtuelle Maschinen über das Storage-Management bis hin zur Namensauflösung. Dennoch zeigt dieser Artikel, wie man dank der Libvirt-Tools mit wenig Aufwand virtuelle Maschinen klonen und konfigurieren kann und dabei so manche Hürde überwindet.
Auch die Entwickler von Libvirt, Guestfish und Co. arbeiten weiter fleißig an ihrer Software und haben eine Menge guter Ideen, deren Implementierung nur der Mangel an Zeit verhindert.
Infos