Heute stelle ich ein Script vor um mehrere VMs auf einem ESXi auf einmal zurückzusetzen. Wir setzen es zum Beispiel in einer Schulungsumgebung bei einem Kunden ein, um jede Nacht alle VMs auf ihren Ursprungszustand zurückzusetzen, damit die nächste Schulung am folgenden Tag wieder neu beginnen kann.
Name
Script name: revert_snapshots
Author: Anton Daudrich
Company: ADMIN INTELLIGENCE GmbH
Version: v0.2
Release date: 2018-01-04
Hilfe
*********************************
revert_snapshots
*********************************
Script for reverting VM Snapshots on a ESXi
it will always revert the machine to the last(youngest) made Snapshot
Usage: revert_snapshot.sh -n [VM_name]
-n [VM_name] name of virtual machines to grep (regex)
for example: W10 will find all machines matching W10*
Optional command-line parameters:
--version prints version and release info
--debug show verbose debug output
Note: This Script is meant to be run on the ESXi Server locally.
Set it up on a datastore accessible to the ESXi
and then run it remote by ssh or locally by cron.
Tested on ESXi 5.5 and ESXi 6.0
***************************************************************************
Thank you for using this script!
Changelog
v0.1 2016-01-28 initial Release
v0.2 2018-01-04 reworked code for public release, added comments
Voraussetzungen
- ESXi Shell Access per SSH
Installation
Das Script sollte persistent auf dem ESXi Host abgelegt werden, z.B. auf einem eingebundenen datastore. Es kann daraufhin per cron oder remote per SSH aufgerufen werden. Getestet auf ESXi 5.5 und ESXi 6.0.
Dokumentation
Arbeitsweise
Das Script läuft lokal auf dem ESXi Host. Es holt sich die benötigten Informationen zu jeder VM (die der Regular Expression entsprechen) und setzt diese auf den letzten (d.h. jüngsten) Snapshot zurück. Dabei wird auch der Power Zustand in dem der Snapshot erstellt wurde (powered on/off) berücksichtigt. Unter anderem kommen folgende Befehle zur Anwendung:
vim-cmd vmsvc/getallvms | grep "$VM_name"
vim-cmd vmsvc/snapshot.get ${VM_id}
vim-cmd vmsvc/snapshot.revert "${VM_id}" "${last_snapshot_id}" "${powerOff}"
Kommandozeilenparameter
-n {regex}
grep Regular Expression für VM Name(n)
siehe auch Hilfe zum Befehl grep
Exit Codes
Keine besonderen exit codes.
Perfdata
Dieses Script generiert keine Perfdaten.
Anwendungsbeispiele
Wir setzen dieses Script ein, um in einer Schulungsumgebung bei einem Kunden jede Nacht alle VMs auf ihren Ursprungszustand zurückzusetzen, damit die nächste Schulung am folgenden Tag wieder neu beginnen kann. Dazu haben wir für jede VM nach der finalen Einrichtung jeweils einen Snapshot angelegt, auf den die VM zurückgesetzt wird. Achtung: das Script verwendet immer den neuesten, also zuletzt angelegten Snapshot!
Download
#############################
### Copyright and License ###
#############################
#
# Copyright (C) 2016 Anton Daudrich
#
# This program is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the Free Software Foundation,
# either version 3 of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
# without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along with this program.
# If not, see http://www.gnu.org/licenses/.
#
#############################
- Postfix Email relay über Office 365 - 6. März 2020
- Mehrere VMs automatisch zurücksetzen - 11. Oktober 2019
- Hurra, die ADMIN INTELLIGENCE App ist da! - 11. September 2019