VMware:Deregistrieren und Löschen von VMs
Aus znilwiki
Deregistrieren und löschen von virtuellen Maschinen per Windows Batch-Datei
Dieses Szenario wurde für einen Kunden erstellt, bei dem über die geplanten Task im vCenter regelmäßig Kopien vorhandener VM's gezogen wurden. Jedoch kann VMware nicht überschreiben - bevor der Task eine neue Kopie einer VM machen kann, muss die alte Version aus dem vCenter verschwunden sein.
Voraussetzung:
- Installierte VMware Remote CLI (z.B. VMware-vSphere-CLI-4.1.0-254719.exe)
- Putty - grafischer Telnet und SSH Client
- Plink - Tool um Befehle von Windows aus auf Linux Rechner abzusetzen
Putty starten und mindestens einmal auf jedem der betroffenen ESX-Servern anmelden. Es erscheint bei der ersten Verbindung stets ein Warnfenster über einen RSA-Schlüssel der bestätigt werden muss. Putty speichert diese Werte in der Registry - und plink.exe nutzt diese ebenfalls.
Schritt 1: Virtuelle Maschine im vCenter deregistrieren
"C:\Program Files (x86)\VMware\VMware vSphere CLI\bin\vmware-cmd.pl" -H vcenter.domain.suffix -h esx01.domain.suffix -U domain\Benutzer -P passwort -s unregister /vmfs/volumes/SAN-Speicher/NameDerVM/NameDerVM.vmx "C:\Program Files (x86)\VMware\VMware vSphere CLI\bin\vmware-cmd.pl" : Aufruf des vmware-cmd Tools -H vcenter.domain.suffix : Angabe des vCenter Servers (auch IP-Adresse möglich) -h esx01.domain.suffix : Angabe des ESX-Servers auf dem die VM liegt -U domain\Benutzer : Windows-Benutzer der die nötigen Rechte im vCenter hat -P passwort : Passwort des Benutzers -s unregister : vmware-cmd sagen das wir eine VM deregistrieren wollen /vmfs/volumes/SAN-Speicher/NameDerVM/NameDerVM.vmx : lokaler Pfad auf dem ESX-Server zur .vmx Datei der VM
Hinweis eines Lesers (Danke an davekay): Unter VMware Infrastructure (vCenter 2.x) muss es statt "-h" -- "-T" heissen!
Problem: | Klingt ja Toll - aber ich habe 3 (oder mehr) ESX Server mit VMware DRS - ich weis doch garnicht auf welchem ESX-Host meine VM gerade liegt! |
Lösung: | Wir machen es uns einfach - und kopieren die Befehlszeile einfach für jeden ESX-Host einmal und passen diese an (-h aufruf ändern (bzw. -T)). Wird die VM auf dem ESX Host nicht gefunden, gibt es einen Fehler - und nichts passiert. |
Schritt 2: Löschen der virtuellen Maschine
Hier kommt nun plink.exe ins Spiel - wir verbinden uns direkt mit den ESX Servern und löschen die VM dort direkt vom Datenträger - Die VM ist ja aus der Bestandsliste des ESX/vCenter entfernt:
"C:\Putty\plink.exe" -ssh esx01.domain.suffix -l root -pw passwort rm -r -f /vmfs/volumes/SAN-Speicher/NameDerVM "C:\Putty\plink.exe" : Aufruf von plink.exe selbst -ssh esx01.domain.suffix : Verbindungstyp SSH + DNS Name des ESX Servers (geht auch IP) -l root : Anmeldebenutzername auf ESX Server -pw passwort : Passwort des Benutzers rm -r -f /vmfs/volumes/SAN-Speicher/NameDerVM : Auszuführender Befehl: rm : remove = Löschbefehl -r : Rekursiv = Verzeichnis inklusive Unterverzeichnisse -f : und bitte ohne störenden Nachfragen /vmfs/../NameDerVM : Pfad zum Ordner (!) der VM
liegt die VM auf einem zentralen Speicher, so reicht es den Befehl auf einem der ESX Server auszuführen - im Gegensatz zur Deregistrierung brauchen wir keinen mehrfach Aufruf.
Beispieldatei: Datei:VM-loeschen Beispiel.cmd
REM ############################################################################################################################################### REM Mailserver "C:\Program Files (x86)\VMware\VMware vSphere CLI\bin\vmware-cmd.pl" -H vCenter.test.local -h esx01.test.local -U test\Administrator -P passw0rd -s unregister /vmfs/volumes/Backup-SAN/zzz_BACKUP_Mailserver/zzz_BACKUP_Mailserver.vmx "C:\Program Files (x86)\VMware\VMware vSphere CLI\bin\vmware-cmd.pl" -H vCenter.test.local -h esx02.test.local -U test\Administrator -P passw0rd -s unregister /vmfs/volumes/Backup-SAN/zzz_BACKUP_Mailserver/zzz_BACKUP_Mailserver.vmx "C:\Program Files (x86)\VMware\VMware vSphere CLI\bin\vmware-cmd.pl" -H vCenter.test.local -h esx03.test.local -U test\Administrator -P passw0rd -s unregister /vmfs/volumes/Backup-SAN/zzz_BACKUP_Mailserver/zzz_BACKUP_Mailserver.vmx "C:\Program Files (x86)\VMware\VMware vSphere CLI\bin\vmware-cmd.pl" -H vCenter.test.local -h esx04.test.local -U test\Administrator -P passw0rd -s unregister /vmfs/volumes/Backup-SAN/zzz_BACKUP_Mailserver/zzz_BACKUP_Mailserver.vmx "C:\Putty\plink.exe" -ssh esx01.test.local -l root -pw wsddtdsa rm -r -f /vmfs/volumes/Backup-SAN/zzz_BACKUP_Mailserver REM ############################################################################################################################################### REM SQL2008 "C:\Program Files (x86)\VMware\VMware vSphere CLI\bin\vmware-cmd.pl" -H vCenter.test.local -h esx01.test.local -U test\Administrator -P passw0rd -s unregister /vmfs/volumes/Backup-SAN/zzz_BACKUP_SQL2008/zzz_BACKUP_SQL2008.vmx "C:\Program Files (x86)\VMware\VMware vSphere CLI\bin\vmware-cmd.pl" -H vCenter.test.local -h esx02.test.local -U test\Administrator -P passw0rd -s unregister /vmfs/volumes/Backup-SAN/zzz_BACKUP_SQL2008/zzz_BACKUP_SQL2008.vmx "C:\Program Files (x86)\VMware\VMware vSphere CLI\bin\vmware-cmd.pl" -H vCenter.test.local -h esx03.test.local -U test\Administrator -P passw0rd -s unregister /vmfs/volumes/Backup-SAN/zzz_BACKUP_SQL2008/zzz_BACKUP_SQL2008.vmx "C:\Program Files (x86)\VMware\VMware vSphere CLI\bin\vmware-cmd.pl" -H vCenter.test.local -h esx04.test.local -U test\Administrator -P passw0rd -s unregister /vmfs/volumes/Backup-SAN/zzz_BACKUP_SQL2008/zzz_BACKUP_SQL2008.vmx "C:\Putty\plink.exe" -ssh esx01.test.local -l root -pw wsddtdsa rm -r -f /vmfs/volumes/Backup-SAN/zzz_BACKUP_SQL2008