Pěkné vypnutí hypervizoru VMWare ESXi při kritické úrovni baterie UPS APC

Existuje mnoho článků o tom, jak nakonfigurovat PowerChute Business Edition a jak se připojit k VMWare z PowerShellu, ale nějak jsem to všechno nemohl najít na jednom místě s popisem jemných bodů. Ale existují.

1. Vstup

Navzdory tomu, že máme nějaké spojení s energií, problémy s elektřinou občas nastanou. Zde vstupuje do hry UPS, ale její baterie bohužel dlouho nevydrží. Co dělat? Vypnout!

Zatímco všechny servery byly fyzické, věci šly dobře, PowerChute Business Edition nám pomohl. Zdarma, pro 5 serverů, což bylo docela dost. Na jednom počítači byl nainstalován agent, server a konzola. Když se blížil konec, agent jednoduše provedl příkazový soubor, který odeslal shutdown.exe /s /m na sousední servery, a poté vypnul svůj OS. Všichni žijí.
Pak přišel čas na virtuální stroje.

2. Pozadí a odrazy

Tak co máme? Vůbec nic – jeden fyzický server se systémem Windows Server 2008 R2 a jeden hypervizor s několika virtuálními stroji, včetně Windows Server 2019, Windows Server 2003 a CentOS. A další UPS – APC Smart-UPS.

Slyšeli jsme o NUT, ale ještě jsme se nedostali k jeho studiu; používali jsme pouze to, co bylo po ruce, konkrétně PowerChute Business Edition.

Hypervizor může sám vypnout své virtuální stroje; nezbývá než mu říct, že je čas. Existuje taková užitečná věc VMWare.PowerCLI, to je rozšíření pro Windows Powershell, které vám umožní připojit se k hypervizoru a sdělit mu vše, co potřebujete. Existuje také mnoho článků o nastavení PowerCLI.

3. Proces

UPS byla fyzicky připojena ke komunikačnímu portu serveru 2008, naštěstí tam byla. I když to není důležité - bylo možné se připojit přes převodník rozhraní (MOXA) k libovolnému virtuálnímu Windows serveru. Dále jsou všechny akce prováděny na stroji, ke kterému je UPS připojena - Windows Server 2008, pokud není výslovně uvedeno jinak. Byl na něm nainstalován agent PowerChute Business Edition. Zde je první jemný bod: služba agenta musí být spuštěna nikoli ze systému, ale od uživatele, jinak agent nebude moci spustit soubor cmd.

Dále jsme nainstalovali .Net Framework 4.7. Zde je vyžadován restart, i když to framework po instalaci výslovně nepožaduje, jinak to dál nepůjde. Poté mohou ještě přijít aktualizace, které je také potřeba nainstalovat.

Dále jsme nainstalovali PowerShell 5.1. Vyžaduje také restart, i když se neptá.
Dále nainstalujte PowerCLI 11.5. Docela nedávná verze, proto předchozí požadavky. Můžete to udělat přes internet, o tom je mnoho článků, ale my jsme si to již stáhli, takže jsme jen zkopírovali všechny soubory do složky Modules.

Kontrolovány:

Get-Module -ListAvailable

Ok, vidíme, že jsme nainstalovali:

Import-Module VMWare.PowerCLI

Ano, konzole Powershell se samozřejmě spouští jako správce.

Nastavení Powershell.

  • Povolit provádění libovolných skriptů:

Set-ExecutionPolicy Unrestricted

  • Nebo můžete povolit pouze ignorování certifikátů skriptu:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned 

  • Povolit PowerCLI připojení k serverům s neplatnými (vypršenými) certifikáty:

Set-PowerCLIConfiguration -InvalidCertificateAction ignore -confirm:$false

  • Potlačit výstup zprávy PowerCLI o připojení k programu pro výměnu zkušeností, jinak bude v protokolu mnoho zbytečných informací:

Set-PowerCLIConfiguration -Scope User -ParticipateInCEIP $false

  • Uložte přihlašovací údaje uživatele pro přihlášení k hostiteli VMWare, aby se ve skriptu explicitně nezobrazovaly:

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

Kontrola ukáže, koho jsme uložili:

Get-VICredentialStoreItem

Můžete také zkontrolovat připojení: Adresa Connect-VIServer.

Samotný skript, například: připojen, vypnut, odpojen pro případ, jsou možné následující možnosti:


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

4. Výchozí.cmd

Stejný dávkový soubor, který spouští agent APC. Nachází se v „C:Program Files[ (x86)]APCPowerChute Business Editionagentcmdfiles“ a uvnitř:

"C:Windowssystem32WindowsPowerShellv1.0powershell.exe" -Soubor "C:...shutdown_hosts.ps1"
Zdá se, že vše bylo nakonfigurováno a zkontrolováno, dokonce jsme spustili cmd - funguje správně, vypíná.

Spouštíme test příkazového souboru z konzoly APC (je tam tlačítko Test) - nefunguje.

Tady je ten nepříjemný okamžik, kdy veškerá vykonaná práce nevedla k ničemu.

5. Katarze

Podíváme se do správce úloh, vidíme blikání cmd, blikání powershell. Podívejme se blíže - cmd *32 a podle toho powershell *32. Tomu rozumíme Služba APC agent je 32bitová, což znamená, že spouští odpovídající konzolu.

Spustíme powershell x86 jako správce a znovu nainstalujeme a nakonfigurujeme PowerCLI od kroku 3.

No, změňme telefonní linku powershell:

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

6. Šťastný konec!

Zdroj: www.habr.com

Přidat komentář