Ich habe mir schon länger vorgenommen zwei meiner am häufig genutzten Produkte per PowerShell etwas näher zusammen zu bringen. Es geht darum, Veeam Backup & Replication und VMware vSphere etwas übergreifender per PowerShell zu verwalten oder zu überwachen. Dazu habe ich mein GitHub Projekt Veeam vSphere Interactions gestartet.
Wenn zwei unabhängige Produkte in einer Shell interagieren können, zeigt mit das wieder einmal wie mächtig PowerShell wirklich ist.
Um das aktuelle Version zu verwenden, bitte einfach den GitHub Export herunterladen, ZIP File extrahieren und Modul importieren.
Zum Beispiel per PowerShell:
# Download wget https://github.com/mycloudrevolution/Veeam-vSphere-Interactions/archive/master.zip -OutFile C:\temp\master.zip # Unzip Add-Type -AssemblyName System.IO.Compression.FileSystem function Unzip { param([string]$zipfile, [string]$outpath) [System.IO.Compression.ZipFile]::ExtractToDirectory($zipfile, $outpath) } Unzip C:\temp\master.zip C:\temp\ # Import Import-Module C:\temp\Veeam-vSphere-Interactions-master\Veeam.PowerCLI-Interactions\Veeam.PowerCLI-Interactions.psd1
** Update – 24-10-2017 **
Zusätzlich steht das PowerShell Modul nun auch in der PowerShell Gallery bereit (Danke für den Wink mit dem Zaunpfahl Michael White):
# Install from Gallery Install-Module -Name Veeam.PowerCLI-Interactions -Scope CurrentUser # Import Import-Module -Name Veeam.PowerCLI-Interactions
Nach dem erfolgreichen Import stehen nun die neuen Funktionen in der aktuellen PowerShell Session zur Verfügung.
Veeam vSphere Interactions – Ziel
Das PowerShell Modul soll an VMware PowerCLI Nutzer gerichtet sein. Mit diesem Grundsatz werden die Funktionen als Input meist VMware vSphere Objekte (z.B. Virtuelle Maschinen) haben und diese werden dann über das Veeam PowerShell SnapIn mit der Veeam Backup & Replication Infrastruktur interagieren.
Veeam vSphere Interactions – Vorbereitung
Damit die Interaktion zwischen den beiden Produkten (VMware PowerCLI und Veeam PowerShell Snapin) funktioniert, muss darauf geachtet werden, dass das VMware vCenter im Veeam Backup & Replication Server korrekt erkannt werden kann.
Dafür muss für die PowerCLI Verbindung der gleiche Name, FQDN oder IP verwendet werden, wie das vCenter auch in Veeam Backup & Replication eingebunden wurde.
Hier ein Beispiel:
Das vCenter wurde mit folgendem Befehl verbunden:
Connect-VIServer -Server 192.168.3.101
Und auch in der Veeam Backup & Replication Konfiguration wurde für das VMware vCenter die IP 192.168.3.101 verwendet.
Neben dem VMware vCenter muss in der gleichen PowerShell Session zusätzlich ein Veeam Backup & Replication Server verbunden werden:
Connect-VBRServer -Server 192.168.3.100
Veeam vSphere Interactions – Funktionen
Funktionen im Überblick:
Get-VeeamProtection | Prüfung des Sicherungszustandes von VMs |
Add-VeeamJobObject | VMs zu Backup Job hinzufügen |
Remove-VeeamJobObject | VMs aus Backup Job entfernen |
Start-VeeamRestore | VMs schnell wiederherstellen |
Start-VeeamQuickBackup
|
VMs schnell sichern |
Die Funktion hat als Input VMware vSphere VMs und prüft deren Protection State im Veeam Backup & Replication Server.
Was meint Protection State?
- Gibt es Restore Points
- Wie viele Restore Points sind vorhanden
- Zeitpunkt des letzten Restore Points
- Zeitpunkt des ersten Restore Points
Das sind die grundlegenden Infos die ich persönlich als essentiell ansehe. Für alles weitere werden dann ohnehin die Veeam eigenen Management Instrumente verwendet werden.
Hier geht es zum PowerShell Code: Get-VeeamProtection
Add-VeeamJobObject
Diese Funktion hat neben den VMware vSphere VMs noch den Backup Job Namen als Input. Die gewünschten Objekte, in diesem Fall VMs, werden dem Backup Job hinzugefügt.
Sollte die VM bereits in dem Job vorhanden sein, bleibt die Erfolgsmeldung aus und die Übersicht der konfigurierten Objekte wird ausgegeben.
Hier geht es zum PowerShell Code: Add-VeeamJobObject
Remove-VeeamJobObject
Analog zur vorherigen Funktion können mit VMware vSphere VMs und dem Backup Job Namen als Input Objekte aus dem Backup Job entfernt werden.
Ist die VM nicht als Backup Objekt vorhanden wird eine Meldung ausgegeben.
Hier geht es zum PowerShell Code: Remove-VeeamJobObject
Start-VeeamRestore
Mit Hilfe dieser Funktion werden die VMware vSphere VMs aus dem Input zu dem letzten bekannten Restore Point wiederhergestellt.
Ist kein Restore Point bekannt wird ein Fehler ausgegeben.
Hier geht es zum PowerShell Code: Start-VeeamRestore
Start-VeeamQuickBackup
Für alle VMware vSphere VMs aus dem Input wird ein Veeam Quick Backup durchgeführt.
Die Voraussetzungen für ein Quick Backup sind, mindestens ein Full Backup und die Zugehörigkeit zu einem Backup Job.
Hier geht es zum PowerShell Code: Start-VeeamQuickBackup
Veeam vSphere Interactions – Work in Progress
Das Veeam vSphere Interactions PowerShell Modul ist in vollem Umfang auch als GitHub Repository bereitgestellt. Zum jetzigen Zeitpunkt ist das Projekt für mich noch im Status „Work in Progress“.
Wenn sich jemand an weiteren Funktionen oder an Verbesserungen der bestehenden Funktionen beteiligen möchte, jederzeit gerne. Ich freue mich auch eure Pull Requests, Issues oder ganz einfach Kommentare hier zu dem Beitrag.
Veeam vSphere Interactions – Danke
Vielen Dank an Luca Dell’Oca für seinen Artikel, Automatically create Veeam backups using vCenter Moref IDs. Dieser zeigt sehr schön wie man VMware vSphere VMs eindeutig in Veeam Backup & Replication identifizieren kann.
** Update – 24-10-2017 **
Lars Wulf hat einen ärgerlichen Bug in der Funktion Get-VeeamProtection aufgedeckt und auch direkt einen Fix dafür geschrieben. Sein Pull Request mit dem Patch habe ich bereits gemerged. Danke dafür!
No Responses