Powershell 2.0 verwaltet die VMware-Server

11. April 2011

Speziell für das Verwalten von ESX-Servern eignen sich die Cmdlets, die mit dem „vSphere PowerCLI“ für Microsofts Powershell von VMware verfügbar sind. Dabei bekommt der Administrator mit diesem Paket mehr Cmdlets in die Hand, als die Powershell selbst bietet – und so hat ein Administrator Zugriff auf die Interna von VMware-basierten Systemen. Doch nur wer sich mit der Funktionsvielfalt dieser Powershell-Erweiterung auskennt, kann sie auch für seine Belange optimal nutzen. Daher sollte man sich immer feste Aufgaben vornehmen und dann mit Hilfe der passenden Cmdlets die Herausforderungen lösen.

Mit dieser Beitragserie wird eine komplette Sitzung an der PowerCLI vorgestellt, dazu gehört das Verbinden mit dem gewünschten Virtualisierungs-Host, das Ausführen grundlegenden Überwachungs- und Verwaltungsaufgaben und danach das Lösen der Verbindung. Die Schritte für den Einsatz des PowerCLI sind vom Prinzip her immer die gleichen. Daher zeigt diese Beispielsitzung nicht nur einen Rahmen für das Verstehen der PowerCLI, sondern sie kümmert sich auch darum, die die wichtigen PowerCLI-Features aussehen.

Um eine komplette Vmware-Umgebung über die Powershell 2.0 zu verwalten, sind drei Voraussetzungen zu erfüllen. Zuerst muss natürlich eine Umgebung mit den Virtualisierungs-Hosts von VMware bereit stehen. Die PowerCLI spielt dabei mit ESX, ESXi 3.0 und neueren Systemen zusammen, ebenso mit VMware Server, einem VCenter Server oder einem der neueren vSphere 4 Produkte.

Als zweite Voraussetzung gilt ein Arbeitsplatzsystem, auf dem die Powershell 2.0 installiert ist. Derzeit ist die Version 4.1.1 der „vSphere PowerCLI“ aktuell. Das Installationspaket mit etwa 84 MByte lässt sich über die Website von VMware kostenlos beziehen. Lediglich eine Registrierung bei VMware ist nötig – sofern sie nicht bereits erfolgt ist. Das wird in der Regel der Fall sein, da sich auf der Website einige nützliche Tools für den Umgang mit den VMware-Produkten finden.

Alternativ kann sich der Administrator das Paket auch über das Download Center von VMware besorgen. Hier muss er dann nach PowerCLI suchen und wird dann die Software auch zum Download angezeigt bekommen.

Dabei besteht allerdings eine Verwechslungsgefahr. Mit „vSphere CLI“ existiert ein namentlich ähnliches Produkt, das zwar die Verwaltung von VMware-Systemen über die Kommandozeile ermöglicht, doch das ist eine traditionelle Konsolen-Applikation, nicht das gewünschte Powershell-Erweiterungspaket.

Die dritte Bedingung sollte ebenfalls eine Selbstverständlichkeit sein: Von dem Arbeitsplatzsystem aus, auf dem die Powershell installiert ist, muss der Zugriff auf den (oder die) VMware-Server möglich sein. Das hört sich wie schon erwähnt als keine Besonderheit an. Doch es muss trotzdem erwähnt werden, weil es unter Umständen etwas zusätzliche Arbeit bedeutet, wenn zum Beispiel ein remoter Zugriff auf einen VMware-Server einzurichten ist.

Wenn zu dem Netzwerk mit den Virtualisierungs-Hosts via VPN (Virtual Private Network) oder über ähnliche Techniken zugegriffen werden kann, sind keine Besonderheiten nötig. Ist aber kein Zugriff über VPN machbar, kann man das Port-Forwarding auf dem Router für das Netzwerk der VMware-Server passend konfigurieren.

Dazu muss sich der Administrator am Router anmelden und dann ein Port-Forwarding auf der „öffentlichen Seite“ des Routers zum Management-Port des VMware-Servers (üblicherweise Port 443) aufsetzen. Dann kann man über die öffentliche IP-Adresse oder den DNS-Namen des Netzwerks sowie die öffentlichen Port-Nummer sich mit dem Virtualisierungs-Host verbinden.

Das Laden der PowerCLI in die Powershell

Wie sich die PowerCLI in die Powershell laden lässt, sollte für den Administrator keine Probleme bereiten. Denn das Installationsprogramm von PowerCLI legt eine Verknüpfung im Start-Menü (unter VMware, VMware vSphere PowerCLI) an. Wer die Powershell über diese Verknüpfung startet, führt sie ein Konfigurationsskript aus, das neben anderen Aktionen auch das PowerCLI-Snap-in lädt. Damit ist ein explizites Laden der PowerCLI nicht nötig – solange man über diese Verknüpfung die Powershell aufruft.

Ansonsten besteht die üblich Vorgehensweise für das Laden von Snap-ins in die Powershell. Dazu muss der Administrator allerdings den Namen des Snap-ins kennen. Bei der PowerCLI lautet er VMware.VimAutomation.Core. Mit dem Cmdlet Add-PSSnapin sieht der passende Befehl dann wie folgt aus:

Add-PSSnapin VMware.VimAutomation.Core

Danach wird die Powershell das betreffende Snap-in selbst finden und es auch laden. Diesen Befehl kann man auch in ein Skript einbauen. Gibt man den Befehl auf einem System ein, das keine PowerCLI installiert hat, liefert die Powershell eine Fehlermeldung, die besagt, dass VMware.VimAutomation.Core nicht installiert ist.

Wer damit Skripts schreiben möchte, der kann einfach die Fehlerbehandlung angehen. Denn beim Überprüfen des Werts der Variablen $? Wird ein False geliefert, wenn das Snap-in nicht geladen wurde.

Wer sich das Konfigurationsskript für PowerCLI ansehen möchte, der findet die Datei PowerCLIEnvironment.ps1 im Installationsverzeichnis der PowerCLI. Neben dem Laden und dem Anpassen des Interfaces zur Powershell definiert dieses Konfigurationsskript lediglich einige PowerCLI-spezifischen Aliase und Funktionen.

Bild 1. Der VMware-Server benötigt das Eingeben der Anmeldeinformationen, ehe die Powershell-Sitzung starten kann. (Quelle: VMware)

Verbindungsaufnahme mit einem VMware-Server

Ehe sinnvolle Aufgaben in einer PowerCLI-Sitzung ausgeführt werden können, gilt es die Verbindung zu dem (oder den) gewünschtem Virtualisierungs-Host mit ESX (der Virtualization Infrastructure) herzustellen. Diese Aufgabe übernimmt das Cmdlet Connect-VIServer. Dieser Schritt ist recht einfach – nur das Cmdlet aufrufen und den Servernamen oder seine IP-Adresse angeben:

Connect-VIServer -Server 192.168.1.21

Danach wird einem die Powershell um die Anmeldeinformationen (sprich in der Regel Benutzername und Kennwort) fragen. Dazu kommt ein üblicher Anmeldedialog ins Spiel (siehe Bild 1).

Es kann allerdings dabei – unter gewissen Umständen – zu einem Problem kommen: Man verwendet einen Tunneling-Ansatz durch das Internet, um einen remoten Zugriff auf einen VMware-Server herzustellen. Die beste Lösung in einer derartigen Konstellation lautet: Nichts an der PowerCLI ändern, sondern ein sicheres VPN zum entfernten Standort aufsetzen. Wenn sich diese Option – aus welchen Gründen auch immer – verbietet, muss man sich an die Konfiguration des Routers machen und sich dann an das Cmdlet Connect-VIServer.

Der Router am entfernten Standort ist dabei so einzustellen, dass er einen verfügbaren Port (an der Seite zum Internet) auf den Port 443 auf dem VMware-Server (an der internen Seite) weiterleitet. Beim Cmdlet Connect-VIServer lässt sich ein Parameter angeben, in dem man einen speziellen Port für derartige Konfiguration angeben kann.

Dazu ein Beispiel: Der VMware-Server liegt in einem LAN im entfernten Standort. Da in diesem LAN auch ein Mail-Server liegt, gibt es einen bekannten Namen, über den man auf den Router im entfernten Standort kommt: mail.net.test. Nach der Verbindung mit dem Router am entfernten Standort wird der Port 51234 (auf der Seite zum Internet) so eingestellt, dass er eine Weiterleitung auf den Port 443 des VMware-Servers einrichtet. Dann kann man das Cmdlet Connect-VIServer wie folgt aufrufen:

Connect-VIServer -Server mail.net.test -Port 51234

Damit sollte die Verbindung zum Vmware-Server stehen und man kann mit den nötigen Aktionen beginnen. Im nächsten Teil dieser Beitragsreihe ist zu sehen, wie sich die grundlegenden Aktionen dabei ausführen lassen – und wie der Administrator so zu einem besserem Verständnis seiner VMware Infrastruktur gelangt.

Alex K. Angelopoulos/rhh

Lesen Sie auch