Dreaming Andy - Fotolia
Automatisierung mit PowerCLI in VMware-Umgebungen
PowerCLI unterstützt mehr als 500 Befehle, um essentielle Aufgaben in virtuellen Rechenzentren durchzuführen und um sie zu automatisieren. Die Technik ist einer GUI weit überlegen.
PowerCLI ist ein Interface für die PowerShell, dass sich in VMware-Umgebungen nutzen lässt. Mit Hilfe von PowerCLI können VMware-Admins viele häufig benötigte Aufgaben in ihren virtualisierten Rechenzentren automatisieren und in großem Maßstab durchführen.
PowerCLI bietet zahlreiche eigene Befehle, die auf die nativen Cmdlets in der Windows PowerShell zugreifen. Mit diesen abgekürzten Kommandos können bestimmte Aktionen gezielt ausgeführt werden.
Das Thema Automatisierung ist in größeren virtuellen Umgebungen von großer Bedeutung, weil die Admins ihre Rechenzentren damit mit niedrigerem Aufwand betreiben können. Die Technik ist zum Beispiel dann besonders nützlich, wenn es um das Bereitstellen von Ressourcen und Workloads geht.
Außerdem sorgt sie dafür, dass die meisten Aufgaben nicht nur weit schneller, sondern auch konsistenter durchgeführt werden können. Das liegt daran, dass automatisierte Aufgaben normalerweise jedes Mal auf dieselbe Art und Weise durchgeführt werden. Automatisierung ist aber auch bei der Entwicklung moderner Software hilfreich. Gerade bei täglich wiederholten Tests, Konfigurationen und Bereitstellungen sorgt sie dafür, dass selbst ein übermüdeter Admin nicht mehr so leicht versehentliche Fehler begeht.
Die PowerShell bietet zahlreiche Möglichkeiten zur Automatisierung von Windows-Umgebungen. Auch unter VMware lassen sich die Fähigkeiten der PowerShell einsetzen. Extra für diesen Zweck hat VMware PowerCLI entwickelt. Die Abkürzung CLI steht in diesem Kontext für Command Line Interface. PowerCLI nutzt die PowerShell dabei als Framework, um wichtige Aufgaben in virtuellen Umgebungen hoch automatisiert ausführen zu können.
Das Zusammenspiel von PowerShell und PowerCLI
In einer VMware-Umgebung können Automatisierung und Management mit Hilfe von PowerCLI weit schneller und in größerem Maßstab erfolgen als etwa über eine separate GUI (Graphical User Interface), die auf das PowerShell-Framework zugreift.
PowerCLI dient dabei als Schnittstelle, die sich in die PowerShell integriert. Die in PowerCLI eingegebenen Befehle werden an die Cmdlets in der PowerShell weitergereicht und dort ausgeführt. So können über PowerCLI-Cmdlets auch virtuelle Infrastrukturkomponenten wie High Availability, Distributed Resource Scheduler und vMotion verwaltet werden. Damit ist es zum Beispiel möglich, Informationen zusammenzutragen, VMs (virtuelle Maschinen) ein- und abzuschalten sowie Workloads oder Dateien zu bearbeiten.
PowerShell-Befehle bestehen aus einer Funktion, die eine zu erledigende Tätigkeit bestimmt, sowie einem Cmdlet, dass ein Objekt definiert, mit dem die Tätigkeit ausgeführt wird. Durch viele zusätzlich verfügbare Parameter können die Befehle weiter spezifiziert werden. Dadurch ist es etwa möglich, nur mit Hilfe einer einzigen Zeile Code auch umfangreiche Änderungen in größeren VMware-Umgebungen auf einen Schlag durchzuführen.
Häufig verwendete PowerCLI-Cmdlets
vCenter und vSphere lassen sich schon mit einer kleinen Zahl von Cmdlets bequem automatisieren.
Mit nur fünf Cmdlets kann ein Admin die meisten häufiger benötigten Aufgaben in vCenter erledigen. Um zum Beispiel Informationen über eine VM zu erhalten (etwa den Namen der VM, ihren aktuellen Zustand, das installierte Gastbetriebssystem und auf welchem ESXi-Host sie sich befindet) kann das Get-VM-Cmdlet verwendet werden.
Eine bereits vorhandene VM in vCenter kann mit Set-VM weiter bearbeitet werden. Der Admin kann zudem den Befehl Start-VM nutzen, um eine einzelne virtuelle Maschine oder auch mehrere VMs gleichzeitig zu starten. Mit Stop-VM kann er die virtuellen Maschinen auch sofort wieder beenden.
Alternativ dazu gibt es noch den Befehl Stop-VMGuest, der stattdessen ein weniger abruptes Beenden ausführt. Das Besondere an diesen Cmdlets ist, dass sie alle auch dazu genutzt werden können, ihre Aufgaben in einem kompletten Rechenzentrum durchzuführen.
vSphere lässt sich mit Hilfe von PowerCLI ebenfalls automatisieren. Eines der mächtigsten Cmdlets für das Management von vSphere ist Copy-VMGuestFile. Damit kann ein Admin lokal vorhandene Dateien und Ordner in eine vSphere-VM transferieren.
Das Cmdlet unterstützt zudem eine Reihe von Parametern, um die Ausführung weiter an das gewünschte Verhalten anzupassen. So gibt es zum Beispiel den Parameter -GuestCredential, mit dem eine VM authentifiziert werden kann. Mit -GuestToLocal kann das Kommando dagegen umgedreht werden, um Dateien und Ordner in die andere Richtung zu transferieren.
Updates für PowerCLI und die PowerShell
PowerCLI bietet jetzt schon über 500 unterschiedliche Befehle. Die Liste der verfügbaren Kommandos wird außerdem laufend erweitert. So hat VMware im Juni 2019 die Version 11.3 von PowerCLI veröffentlicht, die unter anderem 22 neue Cmdlets für das Management von HCX (Hybrid Cloud Extension), eine Unterstützung für Opaque Networks, zusätzliche Arten von Netzwerkadaptern und erweiterte Möglichkeiten bietet, um Instant Clones anzulegen.
Die PowerShell umfasst natürlich noch weit mehr Möglichkeiten, als bislang in PowerCLI integriert werden konnten. So hat auch Microsoft im Mai 2019 eine neue Version der PowerShell angekündigt. Die neue Version 7 enthält zum Beispiel mehrere neue APIs (Application Programming Interfaces) für .Net Core 3.0. Darüber hinaus hat der Hersteller auf dem PowerShell Summit im September 2019 weitere Entwicklungen im Bereich Programmierung angekündigt.
Darüber hinaus arbeitet die PowerShell nun auch mit Serverless Computing von AWS (Amazon Web Services) direkt zusammen. Damit kann ein Windows-Deployment verwaltet werden, ohne dass dafür mehr ein dedizierter Windows-Server benötigt wird. Die PowerShell kann nun eine spezielle API nutzen, die Serverless-Ereignisse auslöst. Damit kann zum Beispiel ein Image in einen Bucket im AWS Simple Storage Service platzieren und dort weiter bearbeitet werden.
Die PowerShell unterstützt nun zudem einen neuen Service namens Simple Hierarchy in PowerShell (SHiPS). Diese Technik kann dazu genutzt werden, einen Hierarchical File System Provider von Grund auf neu anzulegen. Normalerweise ist das eine sehr aufwändige Aufgabe. So werden für die Entwicklung eines eigenen Provider-Moduls üblicherweise mehrere Tausend Zeilen Code benötigt. Mit SHiPS soll sich diese Zahl auf nur noch etwa 20 Zeilen Code reduzieren lassen.