Sierlijke afsluiting van VMWare ESXi-hypervisor op kritiek batterijniveau van APC UPS

Er zijn veel artikelen beschikbaar over het configureren van PowerChute Business Edition en het verbinden met VMWare vanuit PowerShell, maar op de een of andere manier kon ik dit niet allemaal op één plek vinden, met een beschrijving van de subtiele punten. Maar ze bestaan.

1. binnenkomst

Ondanks dat we enige connectie hebben met energie, ontstaan ​​er soms problemen met elektriciteit. Dit is waar de UPS in het spel komt, maar de batterijen gaan helaas niet lang mee. Wat moeten we doen? Uitschakelen!

Hoewel alle servers fysiek waren, ging het goed, maar PowerChute Business Edition heeft ons geholpen. Gratis, voor 5 servers, wat voldoende was. Er werden een agent, server en console op één machine geïnstalleerd. Toen het einde naderde, voerde de agent eenvoudigweg een opdrachtbestand uit dat shutdown.exe /s /m naar naburige servers stuurde, en sloot vervolgens het besturingssysteem af. Iedereen leeft.
Toen was het tijd voor virtuele machines.

2. Achtergrond en reflecties

Dus wat hebben we? Helemaal niets: één fysieke server met Windows Server 2008 R2 en één hypervisor met verschillende virtuele machines, waaronder Windows Server 2019, Windows Server 2003 en CentOS. En nog een UPS – APC Smart-UPS.

We hoorden over NUT, maar zijn er nog niet aan toegekomen om het te bestuderen; we gebruikten alleen wat voorhanden was, namelijk PowerChute Business Edition.

De hypervisor kan zijn virtuele machines zelf afsluiten; het enige dat overblijft is hem te vertellen dat het tijd is. Er is zoiets handigs VMWare.PowerCLI, dit is een extensie voor Windows Powershell waarmee je verbinding kunt maken met de hypervisor en alles kunt vertellen wat je nodig hebt. Er zijn ook veel artikelen over PowerCLI-instellingen.

3. Proces

De UPS was fysiek verbonden met de com-poort van de server uit 2008, gelukkig was hij daar. Hoewel dit niet belangrijk is, was het mogelijk om via een interfaceconverter (MOXA) verbinding te maken met elke virtuele Windows-server. Verder worden alle handelingen uitgevoerd op de machine waarop de UPS is aangesloten - Windows Server 2008, tenzij uitdrukkelijk anders vermeld. De PowerChute Business Edition-agent is erop geïnstalleerd. Hier is het eerste subtiele punt: de agentservice moet niet vanuit het systeem worden gestart, maar vanuit de gebruiker, anders kan de agent het cmd-bestand niet uitvoeren.

Vervolgens installeerden we .Net Framework 4.7. Hier is een herstart vereist, ook al vraagt ​​het framework er na de installatie niet expliciet om, anders komt het niet verder. Daarna kunnen er nog updates komen, die ook geïnstalleerd moeten worden.

Vervolgens hebben we PowerShell 5.1 geïnstalleerd. Vereist ook een herstart, ook al vraagt ​​hij het niet.
Installeer vervolgens PowerCLI 11.5. Een vrij recente versie, vandaar de eerdere vereisten. Je kunt het via internet doen, er zijn veel artikelen over, maar we hebben het al gedownload, dus we hebben zojuist alle bestanden naar de map Modules gekopieerd.

Gecontroleerd:

Get-Module -ListAvailable

Oké, we zien dat we het volgende hebben geïnstalleerd:

Import-Module VMWare.PowerCLI

Ja, de Powershell-console wordt uiteraard gestart als beheerder.

Powershell-instellingen.

  • Sta uitvoering van scripts toe:

Set-ExecutionPolicy Unrestricted

  • Of u kunt alleen toestaan ​​dat scriptcertificaten worden genegeerd:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned 

  • Sta PowerCLI toe verbinding te maken met servers met ongeldige (verlopen) certificaten:

Set-PowerCLIConfiguration -InvalidCertificateAction ignore -confirm:$false

  • Onderdruk de uitvoer van het PowerCLI-bericht over deelname aan het ervaringsuitwisselingsprogramma, anders zal er veel onnodige informatie in het logboek staan:

Set-PowerCLIConfiguration -Scope User -ParticipateInCEIP $false

  • Bewaar de gebruikersreferenties voor het inloggen op de VMWare-host, zodat deze niet expliciet in het script worden weergegeven:

New-VICredentialStoreItem -Host address -User user -Password 'password'

Als u controleert, ziet u wie we hebben gered:

Get-VICredentialStoreItem

U kunt ook de verbinding controleren: Connect-VIServer-adres.

Het script zelf, bijvoorbeeld: verbonden, uitgeschakeld, verbroken voor het geval dat, de volgende opties zijn mogelijk:


    Connect-VIserver -Server $vmhost 
    Stop-VMHost $vmhost -force -Confirm:$false 
    Disconnect-VIserver $vmhost -Confirm:$false

4. Standaard.cmd

Hetzelfde batchbestand dat wordt gestart door de APC-agent. Het bevindt zich in “C:Program Files[ (x86)]APCPowerChute Business Editionagentcmdfiles”, en binnen:

"C:Windowssystem32WindowsPowerShellv1.0powershell.exe" -Bestand "C:...shutdown_hosts.ps1"
Het lijkt erop dat alles is geconfigureerd en gecontroleerd, we hebben zelfs cmd gelanceerd - het werkt correct, schakelt het uit.

We voeren een opdrachtbestandstest uit vanaf de APC-console (er is daar een knop Test) - deze werkt niet.

Hier is het, dat ongemakkelijke moment waarop al het verrichte werk tot niets heeft geleid.

5. Catharsis

We kijken naar Taakbeheer, we zien cmd-flitsen, powershell-flitsen. Laten we het eens nader bekijken: cmd *32 en dienovereenkomstig powershell *32. Dat begrijpen wij De APC-agentservice is 32-bits, wat betekent dat deze de bijbehorende console uitvoert.

We starten powershell x86 als beheerder en installeren en configureren PowerCLI vanaf stap 3 opnieuw.

Laten we de powershell-oproeplijn wijzigen:

"C:Windows<b>SysWOW64</b>WindowsPowerShellv1.0powershell.exe…

6. Gelukkig einde!

Bron: www.habr.com

Voeg een reactie