Elegantné vypnutie hypervízora VMWare ESXi pri kritickej úrovni batérie UPS APC

Existuje veľa článkov o tom, ako nakonfigurovať PowerChute Business Edition a ako sa pripojiť k VMWare z PowerShell, ale nejako som to všetko nemohol nájsť na jednom mieste s popisom jemných bodov. Ale existujú.

1. vstup

Napriek tomu, že máme nejaké spojenie s energiou, občas sa objavia problémy s elektrinou. Tu vstupuje do hry UPS, ale jej batérie, žiaľ, dlho nevydržia. Čo robiť? Vypnúť!

Zatiaľ čo všetky servery boli fyzické, všetko išlo dobre, PowerChute Business Edition nám pomohol. Zadarmo, pre 5 serverov, čo bolo celkom dosť. Agent, server a konzola boli nainštalované na jednom počítači. Keď sa blížil koniec, agent jednoducho vykonal príkazový súbor, ktorý odoslal shutdown.exe /s /m na susedné servery a potom vypol svoj OS. Všetci žijú.
Potom prišiel čas na virtuálne stroje.

2. Pozadie a odrazy

Čo teda máme? Vôbec nič – jeden fyzický server so systémom Windows Server 2008 R2 a jeden hypervízor s niekoľkými virtuálnymi strojmi vrátane Windows Server 2019, Windows Server 2003 a CentOS. A ďalší UPS – APC Smart-UPS.

Počuli sme o NUT, ale ešte sme sa nedostali k jeho štúdiu; použili sme len to, čo bolo po ruke, konkrétne PowerChute Business Edition.

Hypervízor môže sám vypnúť svoje virtuálne stroje; zostáva mu len povedať, že je čas. Existuje taká užitočná vec VMWare.PowerCLI, toto je rozšírenie pre Windows Powershell, ktoré vám umožní pripojiť sa k hypervízoru a povedať mu všetko, čo potrebujete. Existuje tiež veľa článkov o nastaveniach PowerCLI.

3. Proces

UPS bol fyzicky pripojený ku komunikačnému portu servera 2008, našťastie tam bol. Aj keď to nie je dôležité - bolo možné pripojiť sa cez prevodník rozhrania (MOXA) k akémukoľvek virtuálnemu Windows serveru. Okrem toho sa všetky činnosti vykonávajú na stroji, ku ktorému je pripojený UPS - Windows Server 2008, pokiaľ nie je výslovne uvedené inak. Bol na ňom nainštalovaný agent PowerChute Business Edition. Tu je prvý jemný bod: služba agenta musí byť spustená nie zo systému, ale od používateľa, inak agent nebude môcť spustiť súbor cmd.

Ďalej sme nainštalovali .Net Framework 4.7. Tu je potrebný reštart, aj keď to framework po inštalácii výslovne nepožaduje, inak to ďalej nepôjde. Potom môžu ešte prísť aktualizácie, ktoré je tiež potrebné nainštalovať.

Ďalej sme nainštalovali PowerShell 5.1. Vyžaduje tiež reštart, aj keď sa nepýta.
Ďalej nainštalujte PowerCLI 11.5. Pomerne nedávna verzia, preto predchádzajúce požiadavky. Môžete to urobiť cez internet, je o tom veľa článkov, ale my sme si to už stiahli, takže sme len skopírovali všetky súbory do priečinka Moduly.

Skontrolované:

Get-Module -ListAvailable

Ok, vidíme, že máme nainštalované:

Import-Module VMWare.PowerCLI

Áno, konzola Powershell sa samozrejme spúšťa ako správca.

Nastavenia Powershell.

  • Povoliť spustenie akýchkoľvek skriptov:

Set-ExecutionPolicy Unrestricted

  • Alebo môžete povoliť iba ignorovanie certifikátov skriptu:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned 

  • Povoliť PowerCLI pripojiť sa k serverom s neplatnými (vypršanými) certifikátmi:

Set-PowerCLIConfiguration -InvalidCertificateAction ignore -confirm:$false

  • Potlačte výstup správy PowerCLI o pripojení k programu výmeny skúseností, inak bude v protokole veľa nepotrebných informácií:

Set-PowerCLIConfiguration -Scope User -ParticipateInCEIP $false

  • Uložte poverenia používateľa na prihlásenie do hostiteľa VMWare, aby sa v skripte explicitne nezobrazovali:

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

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

Get-VICredentialStoreItem

Môžete tiež skontrolovať pripojenie: Adresa Connect-VIServer.

Samotný skript, napríklad: pripojený, vypnutý, odpojený pre prípad, že sú možné nasledujúce možnosti:


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

4. Default.cmd

Rovnaký dávkový súbor, ktorý spúšťa agent APC. Nachádza sa v „C:Program Files[ (x86)]APCPowerChute Business Editionagentcmdfiles“ a vo vnútri:

"C:Windowssystem32WindowsPowerShellv1.0powershell.exe" -Súbor "C:...shutdown_hosts.ps1"
Zdá sa, že všetko bolo nakonfigurované a skontrolované, dokonca sme spustili cmd - funguje správne, vypína sa.

Spustíme test príkazového súboru z konzoly APC (je tam tlačidlo Test) - nefunguje.

Tu je ten nepríjemný moment, keď všetka vykonaná práca neviedla k ničomu.

5. Katarzia

Pozeráme sa na správcu úloh, vidíme blikanie cmd, blikanie powershell. Pozrime sa bližšie - cmd *32 a podľa toho aj powershell *32. Rozumieme tomu Služba APC agent je 32-bitová, čo znamená, že spúšťa zodpovedajúcu konzolu.

Spustíme powershell x86 ako správca a znova nainštalujeme a nakonfigurujeme PowerCLI od kroku 3.

No, zmeňme linku powershell:

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

6. Šťastný koniec!

Zdroj: hab.com

Pridať komentár