besterino
Legende
Thread Starter
- Mitglied seit
- 31.05.2010
- Beiträge
- 7.565
- Desktop System
- Rechenknecht
- Laptop
- Lenovo Legion 7 Pro (5900HX, 3080, 32GB)
- Prozessor
- Intel i9-13900KS@6300
- Mainboard
- ASUS Maximus Z790 Hero
- Kühler
- Kryo Next S1700, 2xMora 420, Tube 200, D5+3xDDC, Aquaero 6 Pro, DFS High Flow USB, Farbwerk360
- Speicher
- 32GB (2x16GB @7600)
- Grafikprozessor
- Inno3D RTX 4090 Frostbite
- Display
- 55" OLED (Dell AW5520QF)
- SSD
- 1x1TB NVME (OS), 1x4TB NVME, Rest (~12TB NVME) über iSCSI-/SMB-Storage
- HDD
- Näh. Technik von gestern.
- Opt. Laufwerk
- Näh. Technik von gestern.
- Soundkarte
- Cambridge Audio DacMagic 200M
- Gehäuse
- Lian-Li DK-05F
- Netzteil
- be Quiet Dark Power 13 1000W
- Keyboard
- Keychron Q6 Pro, Maxkeyboard Custom Caps, Black Lotus / Dolphin Frankenswitch, Everest Pads
- Mouse
- Swiftpoint Z
- Betriebssystem
- Windows 11 Pro for Workstations (SMB Direct - yeah baby)
- Sonstiges
- Mellanox ConnectX-4 (Dual 100Gbit Netzwerk + WaKü), Rode NT-USB, Nubert ampX uvm. ...
Bin gerade dabei, mir das einzurichten und da ich das alles im Zweifel - wenn ich es wieder brauche - vergessen haben werde, hier ein kleines HowTo.
Gibt es zwar alles im Netz, aber hier trage ich mal alle Schritte zusammen, vom Einrichten der VM über die Installation von CentOS bis hin zu eben der Konfiguration von APCUPSD. Sollte dann auch für jemanden geeignet sein, der bei Null anfängt (so wie ich vorhin ).
Anmerkungen / Anregungen / Verbesserungen wie immer gerne willkommen!
JETZT FUNKTIONAL
Kurzzusammenfassung:
1. CentOS-VM aufsetzen und CentOS installieren + updaten
2. In CentOS-VM usb-utils + apcupsd installieren
3. apcupsd in SELinux als Ausnahme zulassen (damit apcupsd den SSH-client nutzen darf)
4. In CentOS-VM SSH-keys für user root (!) erzeugen und public-key dem ESXi-Host "beibringen"
5. Auf ESXi-Host in einem Datenspeicher (!) Script-Datei mit den einzelnen Shutdown-Befehlen erstellen
6. In CentOS-VM die Datei "/etc/apcupsd/apccontrol" anpassen, dass anstelle des lokalen shutdowns per ssh die Script-Datei aus 4. ausgeführt wird.
ALLGEMEINE VORBEREITUNGEN (ESXi-HOST / VM AUFSETZEN)
Ausgangsbasis:
1. Host: ESXi 6.5U1
2. USV: APC "Smart-UPS C 1000" und APC "BACK-UPS ES 700"
3. Hardware-Setup: Verbindung USV<-->Host mit USB-Kabel an ganz normalem USB-Port des Host
SSH auf ESXi-Host aktiviereren+starten:
1. TSM-SSH-Dienst manuell starten.
2. Unter Host-->Verwalten-->Dienste rechtsklick auf den Dienst "TSM-SSH" und dann auf Richtlinie "Mit dem Host starten und beenden" Haken setzen.
Wäre ja blöd, wenn das Ganze beim nächsten Reboot des Hosts nicht mehr funktioniert...
Setup VM Hardware:
CPU: 1
RAM: 2048MB (geht bestimmt auch weniger)
USB: APC
CentOS-VM installieren
Download: CentOS 7 64Bit "Everything ISO"
Ich nehm immer englisch als Sprache, da die meisten Howtos zu Linux eh auf englisch sind.
Im nächsten Screen empfehlen sich einige Anpassungen:
1. Network & Host Name
Praktisch: VMX3NET wird von Haus aus unterstützt.
1.1 NIC aktivieren und ggf. Hostnamen setzen
1.2 Unter "Configure" den automatischen Start bei Verfügbarkeit aktivieren
2. Keyboard Layout:
Da nehme ich dann gerne deutsch...
3. Date & Time anpassen:
Region: Europe
City: Berlin
Network time: on
4. Installation Destination:
Muss man nur einmal aufrufen und mit "Done" bestätigen.
5. User Festlegen:
Neben dem Root-Passwort lege ich zusätzlich direkt einen Admin-User an - wir wollen ja nicht alles immer mit root machen...
Dann begrüßt uns auch bald schon ein 1/3 Reboot-Button (irgendwie klappt das mit der Darstellung im ESXi-Browser-Console nicht so gut):
Nach dem Reboot begrüßt sehn wir dann (hoffentlich) den Login / geht natürlich auch per SSH.
VM KONFIGURIEREN
Nun haben wir die Basis und können uns dem eigentlichen Thema widmen:
APCUPSD installieren:
1. Naja. Als erstes bringen wir mal das System auf den aktuellen Stand:
Achtung, man muss ab und an mal mit "y" bestätigen.
2. USB-Utilities installieren (möglicherweise optional, hab's mal gemacht)
3. APCUPSD installieren (ist nicht im Standard, daher muss man zusätzliche Quellen hinzufügen):
4. Reboot der VM (geht bestimmt auch anders, aber so geht's halt auch)
5. Ich musste gar nichts mehr manuell konfgurieren, erster Test mit apcaccess:
Sieht gut aus.
SELinux für apcupsd in der VM konfigurieren
0. root werden: "sudo -s"
1. SELinux tools nachrüsten: "yum install policycoreutils-python"
2. Ausnahme für apcupsd setzen: "semanage permissive -a apcupsd_t"
SSH konfigurieren
Damit wir uns so voll interaktiv (ohne Passwort-Eingabe) mit der VM über SSH automatisch auf dem ESXi-Host einloggen können, müssen wir uns anstelle per Passwort mit einem SSH-Key authentifizieren.
Alle folgenden Befehle in der VM ausführen! NICHT auf dem ESXi-Host!
Alle Befehle als root ausführen!
0. Falls noch nicht geschehen, zu "root" werden:
1. SSH-Key für den VM-Nutzer erzeugen:
Wenn man nach einer Passphrase gefragt wird, leer lassen (wir wollen ja später ohne Passworteingabe Befehle ausführen)! Optional: mit dem "-C" Parameter kann man dem Key eine Beschreibung hinzufügen, die dann später die Zuordnung der Keys zu Nutzern und Maschinen erleichtert (siehe Beispiel unten).
2. SSH-Key dem ESXi-Host "beibringen" für den login als "root":
Wenn man sich das erste mal mit dem ESXi-Host per SSH verbindet, muss man einmal mit "yes" bestätigen, dass man das will. Dann wird man noch einmal nach einem Passwort gefragt - das ist dann das root-Passwort deines ESXi-Hosts!
Ob das ganze erfolgreich war, können wir dann einfach testen. Wenn der folgende Befehl ohne Passwort-Abfrage erfolgreich zu einem Login auf dem ESXi führt, lüppt das Ganze soweit:
Jetzt haben wir die Grundfunktionalität.
Aber das ist ja nicht der Sinn der Übung, sondern es sollen ja vor allem die wichtigen VMs und der ESXi-Host sauber herunter gefahren werden.
ESXI-HOST "SHUTDOWN VMs + HOST KONFIGURIEREN"
Wir gehen also jetzt 'rüber zum ESXi-Host, soll heißen, dort einloggen per SSH (mit dem user root).
1. VMs auflisten
Dort lassen wir uns zunächst mit "vim-cmd vmsvc/getallvms" alle unsere VMs anzeigen und merken uns die IDs zu den jeweiligen VM-Namen:
2. Script basteln
Für unsere Automatisierung kreieren wir beispielsweise ein Verzeichnis "scripts". Achtung: Das Verzeichnis muss offenbar auf einem Datenspeicher liegen und darf NICHT im root-Verzeichnis erstellt werden! Ansonsten sind Verzeichnis und Inhalt nach dem nächsten Reboot weg! Hint Hint: sollte vermutlich auch nicht auf einem NFS-Speicher einer Storage-VM liegen, die ihr mit dem Script herunter fahren möchtet...
Dann erstellen wir eine Datei, in der wir unsere gesammelten Befehle für den Fall eines Stromausfalls ablegen, zum Beispiel mit dem Namen "shutdown-all-vms.sh":
Um eine VM nun herunter zu fahren nutzt man dann den Befehl "vim-cmd vmsvc/power.shutdown [VMID#]", in der gewünschten Reihenfolge. Das Ganze kann man dann noch mit gewissen Pausen bestücken, wenn zum Beispiel eine Storage-VM dabei ist, die erst herunter gefahren werden soll, wenn all dort liegenden VMs auch wirklich unten sind.
Achtung: Ihr dürft die CentosVM selbst nicht auch herunter fahren, sonst wird das Script abgebrochen! Diese VM wird dann von ESXi selbst auf die eher harte Weise beendet, wenn der Host sich selbst herunter fährt.
In meinem Fall sieht die shutdown-all-vms.sh zum Beispiel auszugsweise so aus:
Zur Erläuterung:
VM #1 macht irgendwie zicken, wenn ich sie richtig herunter fahre. Darum schicke ich sie nur schlafen (suspend) bis ich das dann mal irgendwann gefixt habe...
VM #7 und #6 sind normale VMs (Windows 10, Sophos UTM)
VM #8 und #9 sind Centos-APCUPSD-VMs für dieses HowTo, sollen NICHT herunter gefahren werden und sind daher auskommentiert (#)
VM #2 ist eine Storage-VM und wird daher erst am Ende herunter gefahren und dann auch noch mit einem 30-Sekunden-Zeitpuffer
3. APCUPSD in der VM für den (Remote-)Aufruf des Scripts konfigurieren
Auf zum großen Finale!
Wir begeben uns zurück in die VM und erstellen mal als erstes eine Sicherheitskopie der Datei, an der wir gleich herumfummeln. ;-)
Dann editieren wir die Datei "apccontrol" mit vi (s.o.) oder einem anderen Editor Eurer Wahl und ändern Folgendes von "${SHUTDOWN}" bis "shutdown"":
Also
in:
Jo, und das war's dann eigentlich auch schon.
Quellen:
Graceful UPS shutdowns for your ESXi server with Centos The Helpful Hacker
Random Stuff: OpenSSH Public Key Authentication
Random Stuff: SSH into ESXi 5 host using public key
ESXi vm shutdown script · GitHub
Performing common virtual machine-related tasks with command-line utilities (2012964)
SSH-Key authentication is not working - SELinux - Experiencing Technology
Linux/Services/Ups - Iveze
HowTos/SELinux - CentOS Wiki
An Introduction to SELinux on CentOS 7 – Part 2: Files and Processes | DigitalOcean
Gibt es zwar alles im Netz, aber hier trage ich mal alle Schritte zusammen, vom Einrichten der VM über die Installation von CentOS bis hin zu eben der Konfiguration von APCUPSD. Sollte dann auch für jemanden geeignet sein, der bei Null anfängt (so wie ich vorhin ).
Anmerkungen / Anregungen / Verbesserungen wie immer gerne willkommen!
JETZT FUNKTIONAL
Kurzzusammenfassung:
1. CentOS-VM aufsetzen und CentOS installieren + updaten
2. In CentOS-VM usb-utils + apcupsd installieren
3. apcupsd in SELinux als Ausnahme zulassen (damit apcupsd den SSH-client nutzen darf)
4. In CentOS-VM SSH-keys für user root (!) erzeugen und public-key dem ESXi-Host "beibringen"
5. Auf ESXi-Host in einem Datenspeicher (!) Script-Datei mit den einzelnen Shutdown-Befehlen erstellen
6. In CentOS-VM die Datei "/etc/apcupsd/apccontrol" anpassen, dass anstelle des lokalen shutdowns per ssh die Script-Datei aus 4. ausgeführt wird.
ALLGEMEINE VORBEREITUNGEN (ESXi-HOST / VM AUFSETZEN)
Ausgangsbasis:
1. Host: ESXi 6.5U1
2. USV: APC "Smart-UPS C 1000" und APC "BACK-UPS ES 700"
3. Hardware-Setup: Verbindung USV<-->Host mit USB-Kabel an ganz normalem USB-Port des Host
SSH auf ESXi-Host aktiviereren+starten:
1. TSM-SSH-Dienst manuell starten.
2. Unter Host-->Verwalten-->Dienste rechtsklick auf den Dienst "TSM-SSH" und dann auf Richtlinie "Mit dem Host starten und beenden" Haken setzen.
Wäre ja blöd, wenn das Ganze beim nächsten Reboot des Hosts nicht mehr funktioniert...
Setup VM Hardware:
CPU: 1
RAM: 2048MB (geht bestimmt auch weniger)
USB: APC
CentOS-VM installieren
Download: CentOS 7 64Bit "Everything ISO"
Ich nehm immer englisch als Sprache, da die meisten Howtos zu Linux eh auf englisch sind.
Im nächsten Screen empfehlen sich einige Anpassungen:
1. Network & Host Name
Praktisch: VMX3NET wird von Haus aus unterstützt.
1.1 NIC aktivieren und ggf. Hostnamen setzen
1.2 Unter "Configure" den automatischen Start bei Verfügbarkeit aktivieren
2. Keyboard Layout:
Da nehme ich dann gerne deutsch...
3. Date & Time anpassen:
Region: Europe
City: Berlin
Network time: on
4. Installation Destination:
Muss man nur einmal aufrufen und mit "Done" bestätigen.
5. User Festlegen:
Neben dem Root-Passwort lege ich zusätzlich direkt einen Admin-User an - wir wollen ja nicht alles immer mit root machen...
Dann begrüßt uns auch bald schon ein 1/3 Reboot-Button (irgendwie klappt das mit der Darstellung im ESXi-Browser-Console nicht so gut):
Nach dem Reboot begrüßt sehn wir dann (hoffentlich) den Login / geht natürlich auch per SSH.
VM KONFIGURIEREN
Nun haben wir die Basis und können uns dem eigentlichen Thema widmen:
APCUPSD installieren:
1. Naja. Als erstes bringen wir mal das System auf den aktuellen Stand:
Code:
$ sudo yum upgrade
2. USB-Utilities installieren (möglicherweise optional, hab's mal gemacht)
Code:
$ sudo yum install usbutils
3. APCUPSD installieren (ist nicht im Standard, daher muss man zusätzliche Quellen hinzufügen):
Code:
$ sudo yum install epel-release
$ sudo yum update -y
$ sudo yum install apcupsd
$ sudo chkconfig apcupsd on
4. Reboot der VM (geht bestimmt auch anders, aber so geht's halt auch)
5. Ich musste gar nichts mehr manuell konfgurieren, erster Test mit apcaccess:
Code:
$ apcaccess
APC : 001,034,0851
DATE : 2018-01-04 14:14:44 +0100
HOSTNAME : MEINER
VERSION : 3.14.14 (31 May 2016) redhat
UPSNAME : MEINER
CABLE : USB Cable
DRIVER : USB UPS Driver
UPSMODE : Stand Alone
STARTTIME: 2018-01-04 14:14:42 +0100
MODEL : Back-UPS ES 700G
STATUS : ONLINE
LINEV : 234.0 Volts
LOADPCT : 0.0 Percent
BCHARGE : 100.0 Percent
TIMELEFT : 9.9 Minutes
MBATTCHG : 5 Percent
MINTIMEL : 3 Minutes
MAXTIME : 0 Seconds
SENSE : High
LOTRANS : 180.0 Volts
HITRANS : 266.0 Volts
ALARMDEL : 30 Seconds
BATTV : 13.5 Volts
LASTXFER : Automatic or explicit self test
NUMXFERS : 0
TONBATT : 0 Seconds
CUMONBATT: 0 Seconds
XOFFBATT : N/A
STATFLAG : 0x05000008
SERIALNO : 3B1035X01052
BATTDATE : 2010-08-24
NOMINV : 230 Volts
NOMBATTV : 12.0 Volts
FIRMWARE : 871.O2 .I USB FW:O2
END APC : 2018-01-04 12:14:07 +0100
$
Sieht gut aus.
SELinux für apcupsd in der VM konfigurieren
0. root werden: "sudo -s"
1. SELinux tools nachrüsten: "yum install policycoreutils-python"
2. Ausnahme für apcupsd setzen: "semanage permissive -a apcupsd_t"
Hinweis: mit dem semanage-Befehl erlauben wir apcupsd quasi "alles" was SELinux normalerweise verbieten würde. Für Sicherheits-Fanatiker ist das natürlich nicht ideal, sondern man müsste apcupsd/apccontrol theoretisch nur den Zugriff auf /usr/bin/ssh und ggf. /root/.ssh/rd_rsa erlauben (die gleich im nächsten Schritt erzeugt wird). Mir war das aber gerade zu mühsam, mich in die Untiefen von SELinux reinzufuchsen und das Sicherheitsrisiko nehme ich sehenden Auges...
SSH konfigurieren
Damit wir uns so voll interaktiv (ohne Passwort-Eingabe) mit der VM über SSH automatisch auf dem ESXi-Host einloggen können, müssen wir uns anstelle per Passwort mit einem SSH-Key authentifizieren.
Alle folgenden Befehle in der VM ausführen! NICHT auf dem ESXi-Host!
Alle Befehle als root ausführen!
0. Falls noch nicht geschehen, zu "root" werden:
Code:
$ sudo -s
1. SSH-Key für den VM-Nutzer erzeugen:
Wenn man nach einer Passphrase gefragt wird, leer lassen (wir wollen ja später ohne Passworteingabe Befehle ausführen)! Optional: mit dem "-C" Parameter kann man dem Key eine Beschreibung hinzufügen, die dann später die Zuordnung der Keys zu Nutzern und Maschinen erleichtert (siehe Beispiel unten).
Code:
$ ssh-keygen -t rsa -b 4096 -C "root@APC700"
2. SSH-Key dem ESXi-Host "beibringen" für den login als "root":
Wenn man sich das erste mal mit dem ESXi-Host per SSH verbindet, muss man einmal mit "yes" bestätigen, dass man das will. Dann wird man noch einmal nach einem Passwort gefragt - das ist dann das root-Passwort deines ESXi-Hosts!
Code:
$ cat ~/.ssh/id_rsa.pub | ssh root@[B]HOSTNAME_ODER_IP_DEINES_ESXI-Hosts[/B] 'cat >> /etc/ssh/keys-root/authorized_keys'
The authenticity of host '192.168.178.14 (192.168.178.14)' can't be established.
RSA key fingerprint is [LUSTIGE ZEICHENFOLGE].
RSA key fingerprint is [NOCH EINE LUSTIGE ZEICHENFOLGE].
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.178.14' (RSA) to the list of known hosts.
Password:
$
Ob das ganze erfolgreich war, können wir dann einfach testen. Wenn der folgende Befehl ohne Passwort-Abfrage erfolgreich zu einem Login auf dem ESXi führt, lüppt das Ganze soweit:
Code:
ssh root@HOSTNAME_ODER_IP_DEINES_ESXI-Hosts
Jetzt haben wir die Grundfunktionalität.
Erster Zwischenstop: TESTEN
Testen wir das Ganze doch nun einmal. Vorsichtshalber alle anderen VMs auf dem Host sauber herunterfahren.
Dann setzen wir einmal für diesen Testzweck die "Maxtime" auf z.B. 30 Sekunden in der /etc/apcupsd/apcupsd.conf über den TIMEOUT-Parameter:
Code:# If during a power failure, the UPS has run on batteries for TIMEOUT # many seconds or longer, apcupsd will initiate a system shutdown. # A value of 0 disables this timer. # # Note, if you have a Smart UPS, you will most likely want to disable # this timer by setting it to zero. That way, you UPS will continue # on batteries until either the % charge remaing drops to or below BATTERYLEVEL, # or the remaining battery runtime drops to or below MINUTES. Of course, # if you are testing, setting this to 60 causes a quick system shutdown # if you pull the power plug. # If you have an older dumb UPS, you will want to set this to less than # the time you know you can run on batteries. TIMEOUT 10
Dann noch einmal den Dienst neustarten:
Code:service apcupsd restart
Und nun können wir mal testweise das Powerkabel ziehen... Achtung: sobald die VM runterfährt, Strom wieder ranstecken! Der ESXi-Host wird ja momentan noch nicht herunter gefahren!
Dann begrüßt uns recht flott (in meinem Fall allerdings nichts wegen des Timers sondern der leeren Batterie):
Code:Broadcast message from root@VM-HOSTNAME (Thu Jan 4 12:49:59 2018): Power failure on UPS VM-HOSTNAME. Running on batteries. Broadcast message from root@VM-HOSTNAME (Thu Jan 4 12:50:11 2018): UPS VM-HOSTNAME initiated Shutdown Sequence Broadcast message from root@VM-HOSTNAME (Thu Jan 4 12:50:11 2018): Remaining battery runtime below limit on UPS VM-HOSTNAME. Doing shutdown.
Der Test ist erfolgreich, wenn sich dann die VM selbst runterfährt.
Aber das ist ja nicht der Sinn der Übung, sondern es sollen ja vor allem die wichtigen VMs und der ESXi-Host sauber herunter gefahren werden.
ESXI-HOST "SHUTDOWN VMs + HOST KONFIGURIEREN"
Wir gehen also jetzt 'rüber zum ESXi-Host, soll heißen, dort einloggen per SSH (mit dem user root).
1. VMs auflisten
Dort lassen wir uns zunächst mit "vim-cmd vmsvc/getallvms" alle unsere VMs anzeigen und merken uns die IDs zu den jeweiligen VM-Namen:
Code:
[root@ESXI:~] vim-cmd vmsvc/getallvms
Vmid Name File Guest OS Version Annotation
4 01_SolarisVM [IntelP600] 01_SolarisVM/01_SolarisVM.vmx solaris11_64Guest vmx-13
[root@ESXI:~]
2. Script basteln
Für unsere Automatisierung kreieren wir beispielsweise ein Verzeichnis "scripts". Achtung: Das Verzeichnis muss offenbar auf einem Datenspeicher liegen und darf NICHT im root-Verzeichnis erstellt werden! Ansonsten sind Verzeichnis und Inhalt nach dem nächsten Reboot weg! Hint Hint: sollte vermutlich auch nicht auf einem NFS-Speicher einer Storage-VM liegen, die ihr mit dem Script herunter fahren möchtet...
Code:
$ mkdir /vmfs/volumes/EINERDEINERDATENSPEICHER/scripts
Dann erstellen wir eine Datei, in der wir unsere gesammelten Befehle für den Fall eines Stromausfalls ablegen, zum Beispiel mit dem Namen "shutdown-all-vms.sh":
Code:
$ vi /vmfs/volumes/DEROBENGEWÄHLTEDATENSPEICHER/scripts/shutdown-all-vms.sh
Mini-Erläuterung zu vi:
Um Text einzugeben die Taste "i" drücken. Wenn ihr mit der Eingabe fertig seid, "ESC". Zum Speichern ":w" und ENTER, zum Verlassen von vi dann ":q" und ENTER. Habt ihr was verfummelt, könnt ihr mit ":q!" den Editor ohne Änderungen an der Datei wieder verlassen.
Um eine VM nun herunter zu fahren nutzt man dann den Befehl "vim-cmd vmsvc/power.shutdown [VMID#]", in der gewünschten Reihenfolge. Das Ganze kann man dann noch mit gewissen Pausen bestücken, wenn zum Beispiel eine Storage-VM dabei ist, die erst herunter gefahren werden soll, wenn all dort liegenden VMs auch wirklich unten sind.
Achtung: Ihr dürft die CentosVM selbst nicht auch herunter fahren, sonst wird das Script abgebrochen! Diese VM wird dann von ESXi selbst auf die eher harte Weise beendet, wenn der Host sich selbst herunter fährt.
In meinem Fall sieht die shutdown-all-vms.sh zum Beispiel auszugsweise so aus:
Code:
vim-cmd vmsvc/power.suspend 1
vim-cmd vmsvc/power.shutdown 7
vim-cmd vmsvc/power.shutdown 6
#vim-cmd vmsvc/power.shutdown 8
#vim-cmd vmsvc/power.shutdown 9
sleep 30s
vim-cmd vmsvc/power.shutdown 2
sleep 120s
poweroff
~
Zur Erläuterung:
VM #1 macht irgendwie zicken, wenn ich sie richtig herunter fahre. Darum schicke ich sie nur schlafen (suspend) bis ich das dann mal irgendwann gefixt habe...
VM #7 und #6 sind normale VMs (Windows 10, Sophos UTM)
VM #8 und #9 sind Centos-APCUPSD-VMs für dieses HowTo, sollen NICHT herunter gefahren werden und sind daher auskommentiert (#)
VM #2 ist eine Storage-VM und wird daher erst am Ende herunter gefahren und dann auch noch mit einem 30-Sekunden-Zeitpuffer
3. APCUPSD in der VM für den (Remote-)Aufruf des Scripts konfigurieren
Auf zum großen Finale!
Wir begeben uns zurück in die VM und erstellen mal als erstes eine Sicherheitskopie der Datei, an der wir gleich herumfummeln. ;-)
Code:
cp /etc/apcupsd/apccontrol /etc/apcupsd/apccontrol.backup.DATUM
Dann editieren wir die Datei "apccontrol" mit vi (s.o.) oder einem anderen Editor Eurer Wahl und ändern Folgendes von "${SHUTDOWN}" bis "shutdown"":
Also
Code:
...
;;
doshutdown)
echo "UPS ${2} initiated Shutdown Sequence" | ${WALL}
[B] ${SHUTDOWN} -h -H now "apcupsd UPS ${2} initiated shutdown"[/B]
;;
in:
Code:
;;
doshutdown)
echo "UPS ${2} initiated Shutdown Sequence" | ${WALL}
[B] ssh root@HOSTNAME_ODER_IP_ESXi-HOST "sh /vmfs/volumes/DEINOBENGEWÄHLTERDATENSPEICHER/Scripts/shutdown-all-vms.sh"[/B]
;;
NOCHMAL TESTEN
Ich empfehle dringend, die Funktionalität auch der apccontrol-Datei und des shutdown-scripts zu testen, also Strom wegnehmen und den ESXi-Host beobachten, dass zuerst die VMs und dann der Host herunter gefahren werden.
Für Hartgesottene und ggf. hilfreich bei der Fehlersuche: Testen kann man seine modifzierte apccontrol-Datei übrigens auch mit "sudo ./apccontrol doshutdown" - davon wird aber ausdrücklich abgeraten! Dafür muss man dann aber nicht immer den dämlichen Strom-Stecker der USV ziehen... Das Auslösen über diesen Befehl findet primär Fehler im Shutdown-Script und bei der Connectivity (SSH), aber z.B. nicht rund um SELinux und anderen Problemchen mit dem apcupsd-Dienst selbst.
Jo, und das war's dann eigentlich auch schon.
Quellen:
Graceful UPS shutdowns for your ESXi server with Centos The Helpful Hacker
Random Stuff: OpenSSH Public Key Authentication
Random Stuff: SSH into ESXi 5 host using public key
ESXi vm shutdown script · GitHub
Performing common virtual machine-related tasks with command-line utilities (2012964)
SSH-Key authentication is not working - SELinux - Experiencing Technology
Linux/Services/Ups - Iveze
HowTos/SELinux - CentOS Wiki
An Introduction to SELinux on CentOS 7 – Part 2: Files and Processes | DigitalOcean
Zuletzt bearbeitet: