9 min read
Automatisiere und verwalte VMware vSphere mit PowerShell
Es liegt wahrscheinlich daran, dass ich meine berufliche Laufbahn als Programmierer mit dem Schreiben von...
ScriptRunner Blog
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:
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.
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
}
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 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.
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.
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.
Tauche in unserem Webinar tief in die transformative Welt der VMware-Automatisierung mit PowerCLI ein – bei gleichzeitigem Einsatz der vielseitigen Fähigkeiten von ScriptRunner.
Wenn du deine Kenntnisse im Data Center Management verbessern, den IT-Betrieb optimieren und das Potential von PowerShell und PowerCLI entfesseln möchtest, dann ist dieses Webinar genau das Richtige für dich.
Erfahre, wie du mit ScriptRunner alle deine wiederkehrenden VMware-Managementaufgaben optimieren, automatisieren, delegieren und überwachen kannst.
🎯 Zentralisiertes Skript- und Modulmanagement
💡 Smarte Skripterstellung mit ChatGPT und OpenAI
🔐 Sichere Verwaltung Credentials und Berechtigungen
👍 Flexible und sichere Delegation mit automatisch erstellten Webformularen
⏰ Interaktive, geplante und ereignisgesteuerte Skriptausführung
🔎 Umfassende Überwachung und Reporting
Hier erhältst du die Aufzeichnung des Webinars!
Wir waren bei einem Webcast der VMware User Group (VMUG) dabei. Hier gibt es die Aufzeichnung dieser (englischen) Veranstaltung:
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?
Mai 10, 2022 by Guy Leech
Es liegt wahrscheinlich daran, dass ich meine berufliche Laufbahn als Programmierer mit dem Schreiben von...
Apr 28, 2023 by Philip Lorenz
In Teil 1 dieser Serie erfährst du mehr über Meta-Daten in VMware und die Nutzung von Tags und Custom Attributes.
...
Jun 1, 2023 by Philip Lorenz
In Teil 2 dieser Serie erfährst du mehr über die Anwendungsfelder von Templates und über den Umgang mit Snapshots,...
Philip Lorenz ist als DevOps- und Cloud-Engineer tätig. Neben dieser Tätigkeit hält er Schulungen und erstellt Lerninhalte rund um die Themen PowerShell, Automatisierung und Cloud-Computing.