Skip to the main content.

ScriptRunner Blog

Effiziente VM-Verwaltung – Snapshots und Templates mit PowerCLI automatisieren (Teil 2)

Inhaltsverzeichnis

 

 

Post Featured Image

In Teil 2 dieser Serie erfährst du mehr über die Anwendungsfelder von Templates und über den Umgang mit Snapshots, beispielsweise wie du sie erstellst, anzeigst und löscht. 

 

VMware hat das Potential der PowerShell recht früh erkannt, weshalb das PowerShellModul (PowerCLI) des Technologie-Unternehmens sehr ausgereift ist. Mit über 800 cmdlets ermöglich das Modul eine nahezu vollständige Automatisierung der VMware Produkte ESX, vCenter oder auch vSphere. Diese Artikel-Serie gibt einen Einblick in verschiedene cmdlets, die aus meiner Sicht eine wichtige Rolle bei der Administration von VMware-Umgebungen spielen und den Admin-Alltag ungemein erleichtern können.

Die Serie setzt sich aus den folgenden Artikeln zusammen:


  • Einleitung und Themenfeld VM-Inventory-Management (Teil 1)
  • Snapshots und VMware-Templates erstellen (Teil 2)
  • Allgemeine VMware Navigation und erweiterte Informationen (Teil 3)

Neben klassischen Verwaltungs- und Filteraufgaben bietet die PowerCLI auch Möglichkeiten zur Automatisierung verschiedener Prozesse, wie etwa die Erstellung von Snapshots und die Anlage von Templates. Beide Funktionen spielen eine zentrale Rolle bei der Verwaltung und Sicherung des Zustands von virtuellen Maschinen (VMs), wodurch du als Administrator Zeit und Aufwand sparen kannst. In diesem Blog-Artikel werfen wir gemeinsam einen genaueren Blick auf die praktischen Anwendungsfälle und Vorteile dieser Kombination.

 

Snapshots

Obwohl Snapshots nicht als vollwertige Backups angesehen werden sollten, sind sie dennoch ein nützliches Werkzeug, um den aktuellen Zustand einer virtuellen Maschine zu konservieren. Im Gegensatz zu Backups, die eine vollständige Kopie der VM-Daten erstellen, erfassen Snapshots lediglich die Änderungen an der VM seit der Erstellung des Snapshots. So können sie bei Bedarf schnell wiederhergestellt werden.

Mit PowerCLI kannst du Snapshots einfach erstellen, verwalten und konsolidieren. Hier sind einige grundlegende Befehle, die dir dabei helfen:

Snapshot einer VM erstellen:


New-Snapshot -VM <VM-Name> -Name <Snapshot-Name> -Description <Beschreibung>

Anzeigen aller Snapshots einer VM:


Get-Snapshot -VM <VM-Name>

Löschen eines Snapshots:


Remove-Snapshot -Snapshot <Snapshot-Name> 

Snapshot aller VMs mit Tag "Test" anlegen und aktuelles Datum als Name des Snapshots vergeben:


$VMs = Get-VM | Get-TagAssignment | Where-Object {$_.Tag -like 'Test'}
$Date = (Get-Date).ToString("dd.MM.yyyy")
Foreach ($vm in $VMs){
$vm | New-Snapshot -Memory -Quiesce -Name $Date
}

 

 

Automatisierte Snapshots vor Updates

Eine praktische Anwendung von Snapshots ist das automatische Erstellen von Snapshots vor Updates. Stell dir vor, alle Test-VMs erhalten ihre Updates an einem bestimmten Tag. Mit PowerCLI kannst du Snapshots vor den Updates erstellen und diese am nächsten Tag konsolidieren, sofern keine Probleme festgestellt wurden. Alles kann automatisiert und mit Tools wie ScriptRunner geplant werden.

 


# Variablen
$SnapshotName = "PreUpdateSnapshot" 
$SnapshotDescription = "Snapshot vor Updates" 
$VMTag = "Test-VM"

# Test-VMs mit dem angegebenen Tag abrufen
$VMs = Get-VM -Tag $VMTag
# Snapshots für Test-VMs erstellen und Windows-Updates starten foreach ($VM in $VMs) {
Write-Host "Erstelle Snapshot für $($VM.Name)..."
$snapshotParams = @{
VM = $VM
Name = $SnapshotName
Description = $SnapshotDescription
}
New-Snapshot @snapshotParams
# Windows-Updates auf der VM ausführen
$UpdateScript = {
Install-WindowsUpdate -AcceptAll -AutoReboot
}
Write-Host "Führe Windows-Updates auf $($VM.Name) aus..."
$invokeScriptParams = @{
VM = $VM
ScriptText = $UpdateScript
GuestCredential = (Get-Credential)
}
Invoke-VMScript @invokeScriptParams
}

 


# Variablen
$SnapshotName = "PreUpdateSnapshot"
$TestVMTag = "Test-VM"
# Test-VMs mit dem angegebenen Tag abrufen
$TestVMs = Get-VM -Tag $TestVMTag
# Snapshots konsolidieren, wenn keine Probleme festgestellt wurden
foreach ($VM in $TestVMs) {
$Snapshot = Get-Snapshot -VM $VM | Where-Object { $_.Name -eq $SnapshotName }
if ($Snapshot) {
Write-Host "Konsolidiere Snapshot für $($VM.Name)..."
Remove-Snapshot -Snapshot $Snapshot -RemoveChildren -Confirm:$false
}
}

 

Templates

Templates spielen eine entscheidende Rolle in der Verwaltung von virtuellen Maschinen (VMs). Sie ermöglichen es dir als Administrator, schnell und effizient neue VMs zu erstellen, die auf einer bestehenden VM basieren.

 

Anwendungsfelder

Mögliche Anwendungsfelder für das Erstellen von Templates mittels PowerCLI sind zum Beispiel das praxisnahe Testen von Änderungen an der Infrastruktur, das Erstellen einer Lab-Umgebung oder als Standardverfahren zur Bereitstellung neuer virtueller Maschinen.

Wenn du eine Änderung an einem produktiven System testen möchtest, solltest du dies nicht direkt an der Produktiv-VM durchführen. Stattdessen kannst du ein Template erstellen, eine neue VM aus diesem Template mit anderer IP bzw. anderem Hostname anlegen (um Konflikte zu vermeiden) und darauf deine Tests durchführen. Dies minimiert das Risiko von Ausfallzeiten und unerwünschten Auswirkungen auf das Produktivsystem.

Templates eignen sich außerdem hervorragend für den Aufbau von Test- oder Lab-Umgebungen. Wenn du beispielsweise zehn Schulungs-Systeme auf Basis eines Templates erstellen möchtest, führe einfach den folgenden Befehl mehrmals aus:


$newVMParams = @{ 
Name = "<VM-Name>"
Template = "<Template-Name>"
Datastore = "<Datastore-Name>"
Location = "<Folder-Path>"
}
New-VM @newVMParams

Mit PowerCLI kannst du einfach und schnell ein Template auf Basis einer bestehenden VM erstellen. Dies ist besonders nützlich, wenn du eine VM für Tests oder als Grundlage für neue VMs verwenden möchtest. Um ein Template zu erstellen, verwende den folgenden Befehl:

 


$newTemplateParams = @{ 
VM = "<VM-Name>" Name = "<Template-Name>" Datastore = "<Datastore-Name>" Location = "<Folder-Path>"
}
New-Template @newTemplateParams

Templates können auch als Basis für die Bereitstellung neuer Server dienen. Anstatt das Erstellen einer neuen VM über die GUI durchzuführen, kannst du mit PowerCLI und dem entsprechenden Template die VM schneller und effizienter bereitstellen. Hier bietet sich auch die Verwendung von Tools wie ScriptRunner an, um diesen Prozess weiter zu automatisieren und zu optimieren.

 

Fazit

Durch den Einsatz von PowerCLI und Templates kannst du zeitaufwändige Aufgaben automatisieren und Fehleranfälligkeit reduzieren. Dies ermöglicht es dir, als Administrator effizienter zu arbeiten und dich auf wichtigere Aufgaben zu konzentrieren. Insgesamt ist die Kombination aus PowerShell, PowerCLI und Templates ein wertvolles Werkzeug für die Verwaltung und Optimierung von virtuellen Maschinen. 
Mit PowerCLI kannst du außerdem schnell und einfach Snapshots erstellen, verwalten und konsolidieren.

 

 

Good2know

VMUG: Webcast

Es lohnt sich, bei der VMware User Group (VMUG) vorbeizuschauen. Am 17. Mai waren wir in der Reihe der Webcasts dabei: 

sr-webinar-vmware

 

Die Verwaltung von vSphere-Umgebungen kann eine Herausforderung sein, aber mit der richtigen Automatisierungslösung muss sie das nicht sein. PowerShell und das PowerCLI-Modul sind großartig, werden aber in der Regel nur von Skripting-Experten verwendet.

Wie wäre es, PowerShell nicht nur dazu zu verwenden, die wiederkehrenden Verwaltungsaufgaben zu standardisieren und zu automatisieren, sondern diese auch an Helpdesk-Teams zu delegieren und sogar auf der Grundlage eigener Skripte Self-Services für Endbenutzer zu erstellen? Auf diese Weise werden Anwender in die Lage versetzt, Snapshots zu verwalten, VMs neu zu konfigurieren, ihre VMs zu stoppen/starten oder Infrastrukturberichte zu erstellen.

Natürlich ist nicht jeder mit der Befehlszeile vertraut, und Anwender sollen keinen privilegierten Zugriff auf die VMware-Umgebung erhalten.

Was ist also erforderlich, um wiederkehrenden Aufgaben im Unternehmen mit PowerShell effizient und sicher zu automatisieren und zu delegieren?

 

 

Hier entlang zum Webcast!

 

 

 

Weiterführende Links

Über den Autor: