Graciozno gašenje VMWare ESXi hipervizora na kritičnom nivou baterije APC UPS-a

Postoji mnogo članaka o tome kako konfigurirati PowerChute Business Edition i kako se povezati na VMWare iz PowerShell-a, ali nekako nisam mogao pronaći sve ovo na jednom mjestu, s opisom suptilnih tačaka. Ali oni postoje.

1. Entry

Uprkos činjenici da imamo neku vezu sa energijom, ponekad se javljaju problemi sa strujom. Tu na scenu stupa UPS, ali njegove baterije, nažalost, ne traju dugo. sta da radim? Ugasiti!

Iako su svi serveri bili fizički, stvari su išle dobro, PowerChute Business Edition nam je pomogao. Besplatno, za 5 servera, što je bilo sasvim dovoljno. Agent, server i konzola su instalirani na jednoj mašini. Kako se bližio kraj, agent je jednostavno izvršio komandnu datoteku koja je poslala shutdown.exe /s /m susjednim serverima, a zatim isključio svoj OS. Svi su živi.
Onda je došlo vrijeme za virtuelne mašine.

2. Pozadina i refleksije

Pa šta imamo? Baš ništa - jedan fizički server sa Windows Server 2008 R2 i jedan hipervizor sa nekoliko virtuelnih mašina, uključujući Windows Server 2019, Windows Server 2003 i CentOS. I još jedan UPS – APC Smart-UPS.

Čuli smo za NUT, ali još nismo stigli da ga proučimo; koristili smo samo ono što nam je bilo pri ruci, odnosno PowerChute Business Edition.

Hipervizor može sam da isključi svoje virtuelne mašine; ostaje samo da mu kaže da je vreme. Postoji tako korisna stvar VMWare.PowerCLI, ovo je ekstenzija za Windows Powershell koja vam omogućava da se povežete na hipervizor i kažete mu sve što vam treba. Postoji i mnogo članaka o postavkama PowerCLI.

3. Proces

UPS je bio fizički spojen na com port servera 2008, srećom bio je tu. Iako to nije važno - bilo je moguće povezati se preko konvertera interfejsa (MOXA) na bilo koji virtuelni Windows server. Dalje, sve radnje se izvode na mašini na koju je UPS povezan - Windows Server 2008, osim ako je izričito drugačije navedeno. Na njemu je instaliran PowerChute Business Edition agent. Evo prve suptilne tačke: usluga agenta mora biti pokrenuta ne iz sistema, već od korisnika, inače agent neće moći da izvrši cmd datoteku.

Zatim smo instalirali .Net Framework 4.7. Ovdje je potrebno ponovno pokretanje, čak i ako okvir to izričito ne traži nakon instalacije, inače neće ići dalje. Nakon toga, možda i dalje dolaze ažuriranja, koja također moraju biti instalirana.

Zatim smo instalirali PowerShell 5.1. Takođe zahteva ponovno pokretanje, čak i ako ne pita.
Zatim instalirajte PowerCLI 11.5. Sasvim novija verzija, otuda i prethodni zahtjevi. To možete učiniti putem interneta, ima mnogo članaka o tome, ali mi smo ga već preuzeli, pa smo samo kopirali sve fajlove u fasciklu Moduli.

Provjereno:

Get-Module -ListAvailable

Ok, vidimo da smo instalirali:

Import-Module VMWare.PowerCLI

Da, Powershell konzola se naravno pokreće kao administrator.

Powershell postavke.

  • Dozvolite izvršavanje bilo koje skripte:

Set-ExecutionPolicy Unrestricted

  • Ili možete dozvoliti samo ignorisanje certifikata skripte:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned 

  • Dozvolite PowerCLI da se poveže sa serverima sa nevažećim (isteklim) sertifikatima:

Set-PowerCLIConfiguration -InvalidCertificateAction ignore -confirm:$false

  • Suzbijte izlaz PowerCLI poruke o pridruživanju programu razmjene iskustava, inače će u dnevniku biti puno nepotrebnih informacija:

Set-PowerCLIConfiguration -Scope User -ParticipateInCEIP $false

  • Sačuvajte korisničke vjerodajnice za prijavu na VMWare host kako ih ne bi eksplicitno prikazali u skripti:

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

Provjera će pokazati koga smo spasili:

Get-VICredentialStoreItem

Također možete provjeriti vezu: Connect-VIServer adresa.

Sama skripta, na primjer: povezan, isključen, isključen za svaki slučaj, moguće su sljedeće opcije:


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

4. Default.cmd

Ista batch datoteka koju pokreće APC agent. Nalazi se u “C:Program Files[ (x86)]APCPowerChute Business Editionagentcmdfiles”, a unutar:

"C:Windowssystem32WindowsPowerShellv1.0powershell.exe" -Datoteka "C:...shutdown_hosts.ps1"
Čini se da je sve konfigurirano i provjereno, čak smo pokrenuli i cmd - radi ispravno, isključuje se.

Pokrećemo test komandne datoteke sa APC konzole (tamo postoji dugme Test) - ne radi.

Evo ga, tog nezgodnog trenutka kada sav obavljen posao nije doveo do ničega.

5. Katarza

Gledamo u upravitelja zadataka, vidimo cmd treperi, powershell treperi. Pogledajmo bliže - cmd *32 i, shodno tome, powershell *32. Mi to razumemo Usluga APC agenta je 32-bitna, što znači da pokreće odgovarajuću konzolu.

Pokrećemo powershell x86 kao administrator i ponovo instaliramo i konfigurišemo PowerCLI od koraka 3.

Pa, promijenimo pozivnu liniju powershell-a:

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

6. Srećan kraj!

izvor: www.habr.com

Dodajte komentar