Es gibt viele Artikel darüber, wie man die PowerChute Business Edition einrichtet und wie man sich über PowerShell mit VMWare verbindet, aber ich habe nichts gefunden, das all dies an einem Ort mit einer Beschreibung der Feinheiten zusammenfasst. Und die sind wichtig.
1. Einleitung
Obwohl wir ein gewisses Interesse an der Energiebranche haben, treten manchmal Probleme mit der Stromversorgung auf. Hier kommt die USV ins Spiel, aber auch ihre Batterien haben leider eine begrenzte Lebensdauer. Was tun? Ausschalten!
Solange alle Server physisch waren, lief alles gut; PowerChute Business Edition half uns. Kostenlos, für 5 Server, was vollkommen ausreichend war. Auf einer Maschine war der Agent, der Server und die Konsole installiert. Wenn das Ende näher rückte, führte der Agent einfach ein Skript aus, das auf benachbarte Server shutdown.exe /s /m sendete und dann sein eigenes Betriebssystem herunterfuhr. Alle sind am Leben.
Dann kam die Zeit virtuellen Maschinen.
2. Ausgangsdaten und Überlegungen
Was haben wir also? Nicht viel – einen physischen Server mit Windows Server 2008 R2 und einen Hypervisor mit mehreren virtuellen Maschinen, darunter Windows Server 2019, Windows Server 2003 und CentOS. Und noch eine USV – APC Smart-UPS.
Von NUT haben wir gehört, aber bisher hatten wir nicht die Gelegenheit, uns damit auseinanderzusetzen; wir haben nur das verwendet, was zur Hand war, nämlich PowerChute Business Edition.
Der Hypervisor kann seine virtuellen Maschinen selbstständig herunterfahren, man muss ihm nur sagen, dass es Zeit ist. Es gibt ein nützliches Tool namens VMWare.PowerCLI, ein Erweiterung für Windows PowerShell, das es ermöglicht, sich mit dem Hypervisor zu verbinden und ihm alles Notwendige mitzuteilen. Es gibt auch viele Artikel über die Einstellungen von PowerCLI.
3. Prozess
Die USV wurde physisch mit dem COM-Port des Servers 2008 verbunden, was glücklicherweise möglich war. Das ist jedoch nicht entscheidend – man hätte sich auch über einen Schnittstellenkonverter (MOXA) mit einem beliebigen virtuellen Windows-Server verbinden können. Alle nachfolgenden Schritte werden auf dem Computer ausgeführt, der mit der USV verbunden ist – Windows Server 2008, sofern nicht ausdrücklich etwas anderes angegeben ist. Dort wurde der PowerChute Business Edition Agent installiert. Hier ist der erste knifflige Punkt: Der Agentendienst muss nicht vom System, sondern vom Benutzer gestartet werden, da der Agent sonst die CMD-Datei nicht ausführen kann.
Anschließend haben wir .Net Framework 4.7 installiert. Hier ist ein Neustart erforderlich, auch wenn das Framework nach der Installation nicht ausdrücklich danach fragt, sonst geht es nicht weiter. Danach können auch Updates ankommen, die ebenfalls installiert werden müssen.
Danach haben wir PowerShell 5.1 installiert. Ein Neustart ist ebenfalls erforderlich, auch wenn nicht danach gefragt wird.
Weiter mit der Installation von PowerCLI 11.5. Eine relativ neue Version, daher die vorherigen Anforderungen. Man kann es über das Internet beziehen, dazu gibt es viele Artikel, aber wir haben es bereits heruntergeladen, also haben wir einfach alle Dateien in den Ordner Modules kopiert.
Überprüft:
Get-Module -ListAvailableOk, wir sehen, dass wir installiert haben:
Import-Module VMWare.PowerCLIJa, die Powershell-Konsole wurde natürlich als Administrator gestartet.
Powershell-Einstellungen.
- Ermöglichen Sie die Ausführung beliebiger Skripte:
Set-ExecutionPolicy Unrestricted- Oder nur die Ignorierung der Skriptzertifikate erlauben:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned - Ermöglichen Sie PowerCLI die Verbindung zu Servern mit ungültigen (abgelaufenen) Zertifikaten:
Set-PowerCLIConfiguration -InvalidCertificateAction ignore -confirm:$false- Unterdrücken Sie die Ausgabe der PowerCLI-Nachricht zur Teilnahme am Customer Experience Improvement Program, sonst gibt es viele unnötige Einträge im Log:
Set-PowerCLIConfiguration -Scope User -ParticipateInCEIP $false- Speichern Sie die Anmeldeinformationen zur Anmeldung am VMWare-Host, um sie nicht direkt im Skript anzuzeigen:
New-VICredentialStoreItem -Host address -User user -Password 'password'Die Überprüfung zeigt, was wir gespeichert haben:
Get-VICredentialStoreItemSie können auch die Verbindung überprüfen: Connect-VIServer address.
Das Skript selbst, zum Beispiel: verbunden, abgeschaltet, zur Sicherheit getrennt, es sind verschiedene Optionen möglich:
Connect-VIserver -Server $vmhost
Stop-VMHost $vmhost -force -Confirm:$false
Disconnect-VIserver $vmhost -Confirm:$false
4. Default.cmd
Die besagte Batch-Datei, die vom APC-Agenten ausgeführt wird. Sie befindet sich in „C:Program Files[ (x86)]APCPowerChute Business Editionagentcmdfiles“, und darin:
„C:Windowssystem32WindowsPowerShellv1.0powershell.exe“ -File „C:…shutdown_hosts.ps1“
Es scheint, als hätten wir alles konfiguriert und überprüft, sogar cmd gestartet – es funktioniert richtig, schaltet ab.
Wir führen aus der APC-Konsole die Überprüfung der Batch-Datei durch (es gibt einen Button „Test“) – es funktioniert nicht.
Hier ist der unangenehme Moment, wenn die ganze Arbeit umsonst war.
5. Katharsis
Wir schauen in den Task-Manager, sehen – cmd ist kurz aufgeploppt, powershell ist kurz aufgeploppt. Wir betrachten genauer – cmd *32 und entsprechend powershell *32. Wir verstehen, dass der APC-Agent 32-Bit ist, was bedeutet, dass er die entsprechende Konsole startet.
Wir starten powershell x86 als Administrator, machen die Installation und Konfiguration von PowerCLI erneut gemäß Punkt 3.
Und wir ändern die Zeile für den Aufruf von powershell:
"C:Windows<b>SysWOW64</b>WindowsPowerShellv1.0powershell.exe…6. Happy End!
Quelle: habr.com
