[Bielefeld-pm] Perl und VMware

Stefan Oberwahrenbrock oberwahrenbrock at gmx.de
Fr Nov 25 09:07:49 PST 2011


Wie beim letzten Treffen angekündigt, habe ich den Versuch unternommen, 
das Zusammenspiel von Perl mit verschiedenen VMware-Produkten 
auszuprobieren. Für Interessierte anbei eine Zusammenfassung meiner 
bisherigen Erfahrungen hierzu.

Gruß,
Stefan


Überblick
=========
Die Produkte von VMware lassen sich grob in zwei Gruppen einteilen: Zum 
einen in Produkte für End- bzw. Heimanwender und zum anderen in 
Produkte, die für (komplexere) Unternehmensszenarien gedacht sind.

Zur ersten Gruppe zähle ich "VMware Player", "VMware Workstation", 
"VMware Fusion" (für Mac-Benutzer) und auch noch den "VMware Server". 
Während "VMware Workstation" und "VMware Fusion" kommerzielle Produkte 
sind, kann man sich den "VMware Player" und den "VMware Server" 
kostenlos von der Web-Seite des Herstellers herunterladen (Registrierung 
erforderlich). Die Weiterentwicklung des "VMware Server" wurde 
allerdings bereits vor einer ganzen Weile eingestellt. Die beiden 
kostenlosen Produkte weisen einen reduzierten Funktionsumfang auf. Alle 
vier Produkte benötigen ein bereits installiertes Betriebssystem.

Zur zweiten Gruppe zählen ich die Virtualisierungsplattform "VMware 
vSphere Hypervisor (ESXi)" in Verbindung mit Management-Software wie dem 
"VMware vCenter Server". Dieses Konglomerat ist in diversen Ausbaustufen 
kostenpflichtig erhältlich und firmiert aktuell unter dem allgemeinen 
Begriff "VMware vSphere". Ein "VMware vSphere Hypervisor (ESXi)" kann 
zwar auch kostenlos heruntergeladen und betrieben werden (Registrierung 
erforderlich), stellt allerdings spezielle Anforderungen an die 
Hardware. So ist dedizierte Hardware nötigt (kein bestehendes 
Betriebssystem als Grundlage) und es müssen bestimmte 
Mindest-Voraussetzungen erfüllt werden - z. B. im Bereich der Netzwerk- 
und Festplattenhardware. Im End- bzw. Heimanwenderbereich wird man es 
daher vermutlich eher selten mit einer "vSphere"-Umgebung zu tun haben.

Dies soll keine vollständige Klassifizierung der Produktpalette von 
VMware sein, sondern lediglich eine Orientierungshilfe. Es gibt da 
gerade im vSphere-Bereich noch eine ganze Reihe weiterer Produkte, die 
hier nicht erwähnt werden.


SDKs und APIs
=============
VMware stellt diverse Dokumentationen zu APIs und SDKs zur Verfügung 
[1]. Im Hinblick auf Perl sind hiervon zwei Nennungen besonders 
interessant: "VMware vSphere SDK for Perl" und "VMware VIX API".

Beim "VMware vSphere SDK for Perl" handelt es sich um ein 
client-seitiges Framework, das den Zugriff auf die "vSphere Web Services 
API" ermöglicht. Diese "Services" sind im wesentlichen 
Management-Funktionen wie z. B. virtuelle Maschine (Guest) hochfahren, 
herunterfahren, auf Snapshot zurücksetzen etc. In der aktuellen Version 
5.0 sind allerdings auch erstmalig Funktionen integriert, die Aktionen 
innerhalb der virtuellen Maschine ermöglichen [2]. Diese umfassen 
Funktionen wie z. B. Dateien in die virtuelle Maschine kopieren, 
Programme starten, Prozesse beenden etc. Hierzu müssen in der virtuellen 
Maschine die "VMware Tools" installiert sein.

Die "VMware VIX API" ermöglicht seit jeher sowohl die Ausführung von 
Management-Funktionen als auch das Durchführen von Operationen innerhalb 
der virtuellen Maschine. Falls jemand bei dem Begriff "VIX" ins Grübeln 
kommt: Er steht für "Virtual Infrastructure eXtension". Die "VMware VIX 
API" kommt nicht nur in vSphere-Umgebungen zum Einsatz, sondern findet 
auch bei Endanwender-Produkten Verwendung. Auch hier müssen in der 
virtuellen Maschine die "VMware Tools" installiert sein, um diese API 
vollständig nutzen zu können. Es gibt "Bindings" für verschiedenen 
Sprachen, u. a. auch für Perl, die die Verwendung der API in eigenen 
Programmen/Scripten ermöglichen.

In den derzeit aktuellen Version von "VMware vSphere SDK for Perl" (5.0) 
und "VMware VIX API" (1.11) haben sich Funktionsumfang und Einsatzzweck 
teilweise vermischt. Dies kann verwirren - es gibt Beiträge, die hierzu 
Hilfestellung für den Durchblick geben [3].


Installation
============
Ich habe beide Produkte auf verschiedenen Betriebssystemen ausprobiert. 
Dies erfolgte in einer vSphere 4.1 Umgebung mit Management-Server. Ein 
Mac-System steht mir nicht zur Verfügung. Zu den Installationen folgende 
Notizen:

"VMware VIX API" unter Windows
Nach der Installation findet sich im Installationsverzeichnis die Datei 
"vix-perl.zip". Entpackt man diese, findet sich in der darin enthaltenen 
README-Datei eine Anleitung zur Installation der Perl-Bindings. Laut der 
Anleitung werden zwei Dinge benötigt: Eine C-Entwicklungsumgebung und 
ein installiertes Perl. Die Anleitung legt einem nahe ein ActivePerl in 
Version 5.10 sowie eine Entwicklungsumgebung von Microsoft zu verwenden. 
Nach meinen Erfahrungen kann man hier auch ein aktuelles ActivePerl 5.14 
verwenden, die Community-Edition ist frei verfügbar [4]. Ältere 
Versionen stehen seitens ActiveState ohnehin nur für die 
kostenpflichtige Business-Edition zur Verfügung. Auch die 
Entwicklungsumgebung "Microsoft Visual Studio 2008 Express Editions mit 
SP1"  wird von Microsoft erfreulicherweise kostenlos zum Download zur 
Verfügung gestellt [5]. In diesem Szenario funktionierte die 
Installation unter Windows XP SP3 problemlos. Ich habe es hingegen 
leider nicht hinbekommen, die Installation mit einer anderen 
C-Entwicklungsumgebung (MinGW installiert durch ActivePerl) oder einem 
Strawberry-Perl und dessen Build-Tools erfolgreich abzuschließen.

"VMware VIX API" unter Linux
Mit einem Debian 6.0 System konnte ich die Installtion zwar scheinbar 
erfolgreich (mit Warnungen) abschließen. Allerdings konnte ich die API 
dann in Scripten nicht benutzen - es kam immer die Meldung 
"HostConnect() failed, 6000 The operation is not supported for the 
specified parameters".
Mit einem OpenSUSE-11.4-System verlief die Installtion erfolgreich. Nach 
der Installation befindet sich die Installationsdatei für die 
Perl-Bindings unter "/usr/lib/vmware-vix/vix-perl.tar.gz". Nach dem 
Entpacken und Wechseln in das dabei erzeugte Verzeichnis "vix-perl", 
kann man das Module mit den drei Schritten "perl Makefile.PL; make; make 
install" installieren. Hierzu muss das Paket 
"patterns-openSUSE-devel_C_C++" installier sein. Die Warnungen während 
des "make" scheinen keine negativen Auswirkungen auf die Funktionalität 
zu haben. Mein Testscript, das unter Debian nicht funktionierte, 
arbeitet unter OpenSUSE ohne irgendwelche Anpassungen fehlerfrei.

"VMware vSphere SDK for Perl" unter Windows
Unter Windows XP SP3 verlief die Installation der aktuellen Version 5.0 
problemlos. Das Setup bringt ein leicht angestaubtes ActivePerl 5.8.8 
mit. Die getesteten Beispiel-Scripte funktionierten auf Anhieb. Ich habe 
die Installation nur auf einem Rechner getestet, auf dem vorher noch 
kein Perl installiert war.

"VMware vSphere SDK for Perl" unter Linux
Mit einem Debian System konnte ich die Installation leider nicht 
erfolgreich abschließen. Das Setup von VMware setzt anscheinend ein 
Linux-System voraus, das mit einem RPM-basierten Paket-Manager arbeitet.
Mit einem OpenSUSE-11.4-System verlief die Installation erfolgreich - es 
müssen allerdings bestimmt Voraussetzungen erfüllt bzw. Kniffe 
angewendet werden:
a) Die Pakete "patterns-openSUSE-devel_C_C++" und "perl-libwww-perl" 
müssen installiert sein
b) Zugang zum CPAN muss eingerichtet sein und funktionieren
c) Für den Zugriff auf einen vSphere-Management-Server via HTTPS muss 
die Umgebungsvariable PERL_LWP_SSL_VERIFY_HOSTNAME mit dem Wert 0 
exportiert werden. Ist dies nicht der Fall, aktzeptiert das zum Einsatz 
kommende LWP::Protocol::https das selbst signierte Zertifikat des 
Management-Servers nicht.


Code-Beispiele
==============
An dieser Stelle sei erneut auf die Dokumentation des Herstellers 
verwiesen, über die sich auch Beispiele finden lassen [1]. Ein erster 
Schritt könnte z. B. das Einschalten einer virtuellen Maschine über die 
"VMware VIX API" sein [6]. Zudem sind den jeweiligen Installationen 
ebenfalls Beispiel-Scripte beigefügt, denen man Perl-Code-Schnipsel 
entnehmen kann.


Fazit
=====
Schade ist, dass sich sowohl "VMware VIX API" als auch "VMware vSphere 
SDK for Perl" nur unter bestimmten Betriebssystemen und in bestimmten 
Software-Konstellationen installieren bzw. verwenden lassen. Hier wäre 
etwas mehr Plattform-Unabhängigkeit wünschenswert. Kann man diesen 
Umstand aber in Kauf nehmen und sich auf die funktionierenden 
Zusammensetzungen beschränken, halten beide Produkte anscheinend, was 
die Dokumentation verspricht. So konnte ich mittels "VMware VIX API" in 
einem eigenen Perl-Script virtuelle Maschinen starten und Dateien in die 
jeweilige Maschine kopieren. Ebenso funktionierte das Hochfahren von 
virtuellen Maschinen mittels "VMware vSphere SDK for Perl" und dem darin 
enthaltenen Script "vmcontrol.pl" problemlos. Ein Verwendungszweck für 
die Produkte könnten z. B. Software-Tests sein, bei denen sich 
wiederholende Abläufe automatisiert ausgeführt werden müssen. Je nach 
zur Verfügung stehenden VMware Produkten, können API und SDK hier 
hilfreich sein.


Links
=====
[1] http://www.vmware.com/support/pubs/sdk_pubs.html
[2] 
http://www.virtuallyghetto.com/2011/07/automating-new-integrated-vixguest.html
[3] 
http://www.virtuallyghetto.com/2010/11/what-is-vmware-vix-api-and-its-future.html
[4] http://www.activestate.com/activeperl/downloads
[5] 
http://www.microsoft.com/downloads/de-de/details.aspx?FamilyID=3254C868-BCB9-412C-95C6-D100C872EC60
[6] 
http://www.vmware.com/support/developer/vix-api/vix111_reference/lang/perl/functions/VMPowerOn.html 



Mehr Informationen über die Mailingliste Bielefeld-pm