Software Challenge : Update der Client VM


Wichtig

Ein manuelles Starten der Client VM führt auch dazu, dass diese möglicherweise einen wartenden Job aus der Jobqueue der vmmain ausführt (also einen Client startet, der gerade an einem Spiel teilnehmen soll). Daher sollte ein manueller Start der Client VM nicht während eines laufenden Spieltages stattfinden.

Versionen

Es gibt eine alte und eine neue ClientVM. Die alte wird als vmclient bezeichnet, die neue als vmclient14.04. Dies ist im weiteren zu beachten (dort wird immer nur vmclient benutzt, wenn man aber die neue VM aktualisieren will, muss man jeweils vmclient durch vmclient14.04 ersetzen).

Starten und Verbinden

Zunächst muss die Client VM Vorlage gestartet werden, damit man diese bearbeiten kann. Dies geschieht auf numerobis mit VBoxHeadless -startvm vmclient (der Aufruf blockiert, solang die VM läuft). Auf die Client VM kommt man dann per SSH von numeroibis oder der vmmain aus (dazu die IP der gestarteten und hochgefahrenen Client VM mit

> VBoxManage guestproperty enumerate vmclient | grep IP

auslesen, dann

> ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no scadmin@<IP>

Oder aber man benutzt das Remote Desktop Protocol (RDP) und verbindet sich auf numerobis 134.245.248.15:. Die VRDE-Portnummer wird angezeigt, wenn man VBoxHeadless ausgeführt hat und ist normalerweise 3390. Dazu kann man unter Linux z.B. rdesktop 134.245.248.15:<VRDE-Port> benutzen.

Ich hatte weder per SSH (keine sichbare IP) als auch per RDP (keine moeglichkeit, Eingaben zu machen) Erfolg. Man kann sich auch per SSH auf numerobis verbinden und dort die GUI fuer VirtualBox mit "VirtualBox" starten. Von dort aus gestartete VMs sind direkt ueber die GUI zugreifbar (allerdings nicht bereits laufende).

Um das Tastaturlayout zu aendern kann man `loadkeys us` bzw. `loadkeys de` benutzen.

Änderungen durchführen

Ist man auf der Client VM, kann man sich einloggen (Benutzerdaten wie auf der vmmain) und die nötigen Änderungen durchführen. Braucht man Internet, kann man die Datei /home/scadmin/connectInternet.sh ausführen, die ein temporäres Gateway über die vmmain einrichtet (ist nach einem Neustart wieder weg). Hat man alle nötigen Änderungen vorgenommen, kann man die VM ganz normal per shutdown-Befehl herunterfahren.

Damit das mit dem Internet funktioniert muss auf der VMMain ip forwarding aktiviert sein und ein entsprechender IPTables eintrag existieren:

sudo sysctl net.ipv4.ip_forward=1 # AUF VMMAIN!

sudo iptables -t nat -A POSTROUTING -o eth8 -j MASQUERADE # AUF VMMAIN!

Weiterhin muss auf der Client VM ein Nameserver in /etc/resolv.conf eingetragen sein (z.B. 8.8.8.8)

Icon

Das IP-Forwarding auf der VMMain nach dem Update wieder deaktivieren, damit wir nicht ausversehen den ClientVMs den Zugriff aufs Internet ermoeglichen!

Icon

Wenn man etwas veraendert, sollte man Pruefen, welche IP der VM zugewiesen wurde (ip addr) und diese dann im DNS Server auf VMMain ausschliessen. Die IPs, die den gestarteten nicht-Clonen der Client-VM zugewiesen werden machen Probleme, wenn sie auch an Clone verteilt werden.

 

Neuen Snapshot anlegen

Nachdem die VM beendet wurde, muss der neue Zustand als Snapshot gespeichert werden, damit davon Klone für die Ausführung der Clients erstellt werden können. Dazu guckt man zunächst mit

> VBoxManage snapshot vmclient list

, welches der zuletzt angelegte Snapshot ist (z.B. snap5). Nun erstellt man einen neuen Snapshot mit

> VBoxManage snapshot vmclient take snap<n+1> --pause

wobei die Nummer des Snapshots erhöht wird (z.B. snap6). Nun muss man noch das Startskrip der Client VM anpassen, sodass es den Klon von dem neuen Snapshot macht. Dazu öffnet man /home/vbox/bin/startVM.sh in einem Editor und bearbeitet die Zeile

VBoxManage clonevm vmclient --snapshot snap5 --options link --name $VMNAME --register

sodass statt snap5 dort der Name des neu erstellten Snapshots steht. Speicher und schließen, fertig. Das wars.