vmchooser plugin¶
- vmchooser plugin
Ist ein OpenSLX Plugin. Es dient der Auswahl von Desktop-Sessions in virtualisierten Umgebungen. Alternativ zu einer Linux Gnome- oder KDE-Session kann eine Virtualisierungsumgebung wie VMware, (QEMU, Virtual Box, ...) gestartet werden, die einen eigenen Desktop zur Verfügung stellt.
Kurzbeschreibung¶
Erstellt eine Standard-Sitzung, in dem die verfügbaren Sitzungen und Virtualisierte Maschinen (wozu Images und Konfigurationsdateien vorliegen müssen) zur Auswahl angezeigt werden. Bei Doppelklick / klick auf den Button wird die Sitzung / das Image mit dem Kommando in der .desktop-Datei von /usr/share/xsessions via /var/opt/openslx/bin/run-virt.sh gestartet.
Die Liste der angezeigten VM-Sessions wird durch das Skript xmlfilter.sh bestimmt. Dieses nimmt in "$1" den Pfad zur Liste der beschreibenden XMLs und gibt als Ergebnis eine Liste zu interpretierender XML-Dateien mit vollem Pfad aus. Es kann daher in weitem Rahmen an eigene Bedürfnisse angepasst werden.
Das Plugin stellt neben dem vmchooser Binary eine Reihe von internen Skripten (z.B. run-virt.sh) zur Verfügung, die jedoch nicht separat funktionieren. vmchooser kann in zwei Modi laufen:- Bereitstellen einer Auswahlliste
- Direktes Starten einer bestimmten virtuellen Maschine:
vmchooser /var/lib/virt/vmware/vmware65/winxp-img.xml
Das interne Skript run-virt.sh (enthält abstrakte, für alle Virtualisierer gemeinsamen Komponenten) nutzt Plugin-Komponenten, die vom jeweiligen Virtualisierungs-Plugin bereitgestellt werden und unterhalb von /etc/opt/openslx/run-{vmware,qemu-kvm,virtualbox}.include abgelegt sind. Hier werden alle virtualisierer-spezifischen Dinge abgehandelt (siehe hierzu die jeweiligen run-virt.include Dateien der einzelnen Plugins).
Zusätzlich zur Auswahl der Sessions kann der vmchoser dazu verwendet werden, einige Grundparameter des Pool Video Switch Clients (pvs) zu setzen. Das kann mit der Option "--pvs" eingeschaltet werden.
Abhängigkeit¶
Dieses Plugin benötigt das desktop Plugin. Sinnvollerweise ist mindestens ein Virtualisierungs-Plugin zusätzlich installiert.
Optionen¶
active¶
Beschreibung:
Aktiviert das Plugin: Bei der Aktivierung in Stage3 wird die .desktop-Datei in das Verzeichnis /etc/X11/session plaziert. Die Aufgabe des Desktop Plugins ist es, dieses Verzeichnis der Session-Suche hinzuzufügen.
Werte:
- 1: aktiviert
- 0: deaktiviert
Standard: 1 (Plugin aktiviert)
env¶
Beschreibung:
Env(ironment) Option hinzugefügt. Diese ist nicht zwingend notwendig und zeigt nur Images an, die zu dieser bestimmten Gruppe gehören.
Werte:
- String
Standard: "default"
xmlpath¶
Beschreibung:
Pfad zu den XMLs in Stage4 (im hochgefahrenen Netzwerk-Client). Hier wird nach beschreibenden XMLs gesucht. Die XMLs werden dann angezeigt und auf Benutzereingabe das asoziierte VM-Image gestartet. Die Syntax der XMLs muss der von
Werte:
- String
Standard: "/var/lib/virt"
to-be-defined¶
Beschreibung:
InPlanung: Es soll mehrere Möglichkeiten geben, den Redo-File-Bereich für die Virtualisierer festzulegen. Standardmäßig liegt alles im /tmp/virt. Hier könnte entweder direkt die darunterliegende ID44 Partition, ein speziell auf das Verzeichnis gemountetes TempFS (mit Überbuchung) oder eine RAID-Konfiguration aus TempFS-Virt-Blockdevice und Netzwerk-Blockdevice (hier wiederum NBD, iSCSI, Virtuelles Blockdevice im NFS) genutzt werden.
Werte:
- String
Standard: "TempFS"
Installation¶
Der Aufruf zur Installation:
slxos-export export <vendorOS> <exportType> slxconfig-demuxer
Anwendung¶
Das Plugin setzt sich als Standard-Sitzung in die Login-Manager und bietet eine Auswahl an verfügbaren Sitzungen. Als besonderes Feature reicht es den Benutzernamen (in dem XML-Element <username>) und den Hostname (XML-Element <hostname> und <computername>) in die XML weiter, die durch das vmware-plugin in das virtuelle System weitergereicht wird. Durch Tools wie bootpgm kann man damit beispielsweise den Hostname unter der virtuellen Maschine dynamisch setzen. Mit der Benutzer-Information könnte man weitere Aktionen starten, wie z.B. die richtigen Home-Verzeichnisse einbinden.
Allgemeine Information¶
Dieses Plugin kopiert die default.desktop-Datei nach /etc/X11/session, welche von den Display-Managern geladen wird. Bei Aufruf des Wrapper-Skript wird zur Zeit nur die Option xmlpath an das vmchooser-Programm übergeben.
Entwickler-Information (vmchooser Programm)¶
Das vmchooser-Plugin hat ein grafisches Hilfprogramm, das den phantasievollen Namen vmchoooser trägt und in /opt/openslx/plugin-repo/vmchooser/ liegt.
Bei Aufruf des vmchooser-Hilfsprogramm kann man --help oder -h als Parameter angeben, um sich die Hilfe anzeigen zu lassen.
Aktuell sieht die Ausgabe dann so aus:
Usage: vmchooser [ OPTIONS ] -d, --default name of default session -f, --file direct boot FILE -P, --pool name of the environment -p, --path path to vmware .xml files -x, --xpath path of X Session .desktop files -s, --size window size <width>x<height> -t, --theme theme -b, --pvs show pvs options -D, --debug print debug information -v, --version print version and exit -h, --help print usage information and exit FILE can be a vmware .xml or an X .desktop file
Der Chooser benutzt Skripte von /var/lib/vmware/runscripts/{printers,scannners}.sh, um die Drucker und Scanner in die jeweilige XML-Datei einzufügen (näheres in "_addPrinters.cxx_":source:openslx-src-tools/vmchooser/trunk/vmchooser/addPrinters.cxx und "_addScanners_":source:openslx-src-tools/vmchooser/trunk/vmchooser/addScanners.cxx). In "_addInfo.cxx_":source:openslx-src-tools/vmchooser/trunk/vmchooser/addInfo.cxx wird der Computername und Benutzer in die XML eingefügt.
Bei der Filterung wird das Skript "_xmlfilter.sh_":source:openslx/trunk/os-plugins/plugins/vmchooser/files/xmlfilter.sh (im selben Verzeichnis wie der vmchooser) ausgeführt, um die XML-Dateien zu filtern. Hier kann beispielsweise unter anderem auch nach dem aktuellen Poolnamen gefiltert werden. Die Ausgabe dieses Skripts sollte ähnlich "ls -1" sein, d.h. eine XML-Datei mit absolutem Pfad in jeder Zeile. Diese XML-Dateien werden dann zur Auswahl angezeigt.
Standardmäßig filtert das "_xmlfilter.sh_":source:openslx/trunk/os-plugins/plugins/vmchooser/files/xmlfilter.sh-Skript die XML-Dateien nach dem XML-Element <slxgroup>, die in Stage3 über das Initramfs übergeben wird (siehe Plugin-Option env). Dieses Element sollte demnach in der XML vorhanden sein, damit der vmchooser überhaupt etwas anzeigt.
Allgemein kann man dieses Filter-Skript als Ersetzung und Erweiterung zu der Option -p[XML-Ordner] sehen. Mit diesem Skript ist es leichter, die Filterkriterien auszuwählen und ermöglicht es auch, mehrere Ordner als XML-Quellen anzugeben.
Mit -l[Linux Session Pfad] können die verfügbaren Linux-Sessions durch Angabe des Pfads bestimmt werden.
Daten für den Start einer virtuellen Maschine¶
Die dem vmchooser vorliegende XML-Datei sollte verschiedene Parameter beinhalten, um einen reibungslosen Start der virtuellen Maschine zu ermöglichen. Hier werden zunächst verschiedene Daten vorgestellt, die in einer validen XML-Datei schon vorhanden sind:
short_description¶
Beschreibung:
Dieser Parameter ist obligatorisch für die Auswahl im vmchooser. Die Daten werden aus dem Attribut param herausgelesen und für den Titel der Session in der Auswahlliste verwendet.
Wert: String
long_description¶
Beschreibung:
Dieser Parameter ist freiwillig. Die Daten werden aus dem Attribut param herausgelesen und für eine Informationsanzeige als Tooltip in der Auswahlliste verwendet.
Wert: String
os¶
Beschreibung: Dieser Wert ist für vmware Pflicht. Vom vmchooser wird es nur ausgelesen, aber nicht verändert. Dieser Wert wird direkt in die vmx-Konfiguration von vmplayer übernommen. Bei unterschiedlichen vmplayer-Versionen treten hier unterschiedliche Werte auf.
Wert: String
Beispiel: winxppro
priority¶
Beschreibung: Falls dieser Wert nicht gefunden wird, wir eine Standardpriorität von 5 angenommen. Hier kann beinflußt werden, auf welcher Position die Image-Einträge angezeigt werden. Ein niedrigerer Wert bedeutet höhere Position in der Auswahlliste im vmchooser.
Wert: Integer
image_name¶
Beschreibung: Der Dateinamen für die Vmware-Image-Datei. Der absolute Pfad vom XML wird vom vmchooser hinzugefügt. Es ist also eine gute Idee, die XML mit relativem Pfadnamen auf die vmware-Images zu versehen. Am besten, die Vmware-Image-Datei befindet sich im selben Ordner wie die XML-Datei.
Wert: String
creator¶
Beschreibung: Der Ersteller des Images. Rein für Informationszwecke. Nicht notwendig für den Betrieb.
Wert: String
email¶
Beschreibung: Die Email des Erstellers. Rein für Informationszwecke. Nicht notwendig für den Betrieb.
Wert: String
phone¶
Beschreibung: Telefon des Erstellers. Rein für Informationszwecke. Nicht notwendig für den Betrieb.
Wert: String
h3.enable3d
Beschreibung: Konfiguration für vmware (virtualbox). Aktiviert die 3D-Unterstützung in den virtuellen Maschinen.
Wert: Bool (true|false)
virtualmachine¶
Beschreibung: Welche virtuelle Maschine soll für das Image verwendet werden. Üblicherweise vmware beim vmware-plugin.
Wert: String (vmware|virtualbox|...)
active¶
Beschreibung: Wert, ob das Image aktiv ist. Nicht in vmchooser berücksichtigt, kann aber leicht in xmlfilter.sh hinzugefügt werden.
Wert: Bool (true|false)
pools¶
Beschreibung: Eine durch Leerzeichen getrennte Liste der Umgebungen, in denen dieses Image zur Auswahl angezeigt werden soll. (siehe auch Option vmchooser::env)
Wert: String
icon¶
Beschreibung: Das Icon zum Anzeigen. Falls der Eintrag in <os param="*[wW]in*"/> existiert, wird ein Windows(tm)-Symbol angezeigt. Andernfalls gibt es die selbsterklärenden Möglichkeiten, das Symbol zu ändern (siehe Werte). Ausnahme: Falls <os param="linux"/> eingetragen ist, wird ein Linux-Symbol angezeigt, es sei denn, im <icon>-Wert steht eines von "ubuntu","suse","gentoo".
Wert: String (Eines aus {"ubuntu","suse","gentoo","macos","bsd"}).
Die folgenden Werte werden beim Ausführen von vmchooser in eine dynamisch generierte XML-Datei hineingeschrieben (/tmp/runXXXXX.xml). Die neuen Werte werden dabei abhängig von Hostnamen, Benutzer und verschiedene Skripte generiert und sind für die Weitergabe in die Images gedacht.
printers-Knoten¶
Beschreibung: Enthält eine Menge von Kind-Knoten namens printer, die jeweils ein Attribut name - einen Druckernamen - und path - meist den öffentlichen Freigabe-Pfad zum Drucker - beinhalten. Als Knoten-Inhalt kann noch eine Beschreibung eingegeben werden.
vmchooser ruft zur Beschaffung der notwendigen Daten das Skript /etc/opt/openslx/printer.sh auf. Schon vorhandene Knoten werden aber einfach übernommen. Das Skript printer.sh in /etc/opt/openslx/ sollte dem vmchooser folgendes Format übergeben (wobei [TAB] ein Tabulator-Zeichen bedeutet):
PFAD[TAB]DRUCKER[TAB]BESCHREIBUNG
Wert: <printer name="Druckername" path="\\Pfad\zu\Drucker">Beschreibung</printer>-Knoten
scanners-Knoten¶
Beschreibung: Enthält eine Menge von Kind-Knoten namens scanner, die jeweils ein Attribut name - einen Scannernamen - und path - meist den öffentlichen Freigabe-Pfad zum Scanner - beinhalten. Als Knoten-Inhalt kann noch eine Beschreibung eingegeben werden. Das Skript scanner.sh in /etc/opt/openslx/ sollte dem vmchooser folgendes Format übergeben (wobei [TAB] ein Tabulator-Zeichen bedeutet):
PFAD[TAB]SCANNER[TAB]BESCHREIBUNG
vmchooser ruft zur Beschaffung der notwendigen Daten das Skript /etc/opt/openslx/printer.sh auf. Schon vorhandene Knoten werden aber einfach übernommen.
Wert: <scanner name="Scannername" path="\\Pfad\zu\Scanner">Beschreibung</scanner>-Knoten
username¶
Beschreibung: Benutzernamen zur Weitergabe in die virtuelle Maschine
Wert: aktueller Benutzername
hostname¶
Beschreibung: Hostname zur Weitergabe in die virtuelle Maschine
Wert: aktueller Hostname
XML-Datei¶
Siehe auch folgende Seite für os param bei VMware.
<?xml version="1.0" encoding="utf-8"?>
<settings>
<entry>
<!-- like the names of the virtualization plugins "vmware", "virtualbox", "qemukvm" -->
<virtualmachine param="vmware"/>
<!-- VM-name with ending .vmdk, .img, .vdi, .qcow2 -->
<image_name param="vm-image.vmdk"/>
<!-- sort after parameters then alphabet, values 0(top) - 9(bottom) -->
<priority param="5"/>
<!-- title shown in the menu -->
<title param="My VM Image"/>
<!-- description shown when image is chosen -->
<description>Image for lectures with a lot of software: office, ...
</description>
<!-- if active="true" the image is selectable via vmchooser -->
<active param="true"/>
<!-- in which environment/domain this image will be selectable via vmchooser -->
<environment param="default"/>
<!-- image locked with a password? -->
<locked param="false"/>
<creator param="Your Name"/>
<email param="your@e-mail.add"/>
<phone param="0123-12345678"/>
<!-- when should this image be deactivated automatically -->
<valid_until param="DD-MM-YY"/>
<!-- type of the OS: if you do not know use "other" -->
<!-- vmware refer to: http://sanbarrow.com/vmx/vmx-guestos.html -->
<os param="winxppro"/>
<!-- "nat", "bridged", "hostonly" -->
<network param="nat"/>
<!-- use a different virtual network card than default, see VM for available types and names -->
<netcard param="e1000"/>
<!-- activate serial port: "ttyS0", "auto" (recommended) -->
<serialport param="false"/>
<!-- activate parallel port: "parport0" (recommended) -->
<parport param="false"/>
<!-- enable 3D support -->
<enable3d param="true"/>
<!-- which shared folders should be connected -->
<shared_folders param="true">
<!-- name="Home" path="/home/$USER" for internal VMware sf -->
<shared_folder name="" path="" pass=""></shared_folder>
</shared_folders>
<!-- which printers should be connected -->
<printers>
<printer name="" path="">Human readable description</printer>
</printers>
<!-- which scanners should be connected -->
<scanners>
<scanner name="" path="">Description</scanner>
</scanners>
<!-- added automatically through vmchooser when started
<username param="user-id"/>
-->
<!-- obsolete, maybe for future implementations
<xdm param="false">
</xdm>
-->
<!-- recently added - Icon to display in list
values: macos,bsd,gentoo,ubuntu,suse
vmware images with <os param="*[Ww]in*"/> get windows symbol
vmware images with <os param="linux"/> defaults to linux symbol, overridden by <icon> (ubuntu/suse/gentoo)
vmware images with <os param="xyz"/> defaults to vmware symbol, overridden by <icon> (all values)
-->
<icon param="*****"/>
</entry>
</settings>
Beispiele zum Aufruf¶
Das vmchooser-Programm kann durch einen einfachen Aufruf mit der XML-Datei als Argument aufgerufen werden (vmchooser --file foo.xml), um beispielsweise eine Vmware-Image einfach auszuführen. Dabei werden alle Optionen herausgelesen und wichtige Informationen in eine temporäre XML-Datei geschrieben, um sie in das virtuelle System weiterzugeben. Es kann somit jegliche Art von Information in das Gast-System weitergegeben werden (B:\config.xml unter Windows).
Bei dieser Art von Aufruf wird keine Auswahlliste angezeigt.
/var/opt/openslx/bin/vmchooser --file /pfad/zu/mein_img_config.xml
Wenn man die Auswahlliste testen will - mit seinem Image -, muss man die Datei /etc/opt/openslx/vmchooser-stage3.conf anpassen, damit der Wert vmchooser_xmlpath auf den gewollten Pfad zeigt. Bemerke: vmchooser_env muss auch auf die richtige Gruppe gestellt sein (die Gruppe, die auch in dem <env>-Wert in der XML steht. Alternativ kann man für den Pfad einfach nur die p|path-Option verwenden
/var/opt/openslx/bin/vmchooser --path=/pfad/zu/meinen_xmls/