Veeam vSphere Interactions with PowerShell

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 - Get-Command

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.

Veeam vSphere Interactions - vCenter Connection

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

Get-VeeamProtection

Veeam vSphere Interactions - Get-VeeamProtection

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

Veeam vSphere Interactions - 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

Veeam vSphere Interactions - 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

Veeam vSphere Interactions - 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

Veeam vSphere Interactions - 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!

Leave a Reply