Ispravno isključivanje VMWare ESXi hipervizora kada je razina napunjenosti baterije APC UPS-a kritična

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

1. Uvod

Unatoč činjenici da imamo neke veze s energijom, ponekad se javljaju problemi s strujom. Tu na scenu stupa UPS, ali njegove baterije, nažalost, ne traju dugo. Što uraditi? Isključiti!

Iako su svi poslužitelji 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 instalirani su na jednom računalu. Kako se bližio kraj, agent je jednostavno izvršio naredbenu datoteku koja je poslala shutdown.exe /s /m susjednim poslužiteljima, a zatim ugasio svoj OS. Svi su živi.
Zatim je došlo vrijeme za virtualne strojeve.

2. Pozadina i refleksije

Dakle, što imamo? Baš ništa - jedan fizički poslužitelj sa sustavom Windows Server 2008 R2 i jedan hipervizor s nekoliko virtualnih strojeva, uključujući Windows Server 2019, Windows Server 2003 i CentOS. I još jedan UPS – APC Smart-UPS.

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

Hipervizor može sam ugasiti svoje virtualne strojeve; preostaje mu samo reći da je vrijeme. Postoji tako korisna stvar VMWare.PowerCLI, ovo je ekstenzija za Windows Powershell koja vam omogućuje da se povežete s hipervizorom i kažete mu sve što trebate. Također postoji mnogo članaka o PowerCLI postavkama.

3. Proces

UPS je bio fizički spojen na com port servera 2008, srećom bio je tu. Iako to nije bitno - bilo je moguće spojiti se putem pretvarača sučelja (MOXA) na bilo koji virtualni Windows poslužitelj. Nadalje, sve radnje se izvode na stroju na koji je spojen UPS - Windows Server 2008, osim ako nije izričito navedeno drugačije. Na njemu je instaliran PowerChute Business Edition agent. Ovdje je prva suptilna točka: usluga agenta mora se pokrenuti ne iz sustava, već od korisnika, inače agent neće moći izvršiti cmd datoteku.

Zatim smo instalirali .Net Framework 4.7. Ovdje je potrebno ponovno pokretanje, čak i ako okvir to eksplicitno ne traži nakon instalacije, inače neće ići dalje. Nakon toga još uvijek mogu dolaziti ažuriranja koja također treba instalirati.

Zatim smo instalirali PowerShell 5.1. Također zahtijeva ponovno pokretanje, čak i ako ne pita.
Zatim instalirajte PowerCLI 11.5. Dosta novija verzija, stoga prethodni zahtjevi. Možete to učiniti putem interneta, postoji mnogo članaka o tome, ali mi smo to već preuzeli, pa smo samo kopirali sve datoteke u mapu 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.

  • Dopusti izvršavanje bilo koje skripte:

Set-ExecutionPolicy Unrestricted

  • Ili možete samo dopustiti da se certifikati skripti zanemare:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned 

  • Dopustite PowerCLI-ju da se poveže s poslužiteljima s nevažećim (isteklim) certifikatima:

Set-PowerCLIConfiguration -InvalidCertificateAction ignore -confirm:$false

  • Spriječite izlaz PowerCLI poruke o pridruživanju programu razmjene iskustava, inače će u zapisniku biti mnogo nepotrebnih informacija:

Set-PowerCLIConfiguration -Scope User -ParticipateInCEIP $false

  • Spremite korisničke vjerodajnice za prijavu na VMWare host kako ih ne biste eksplicitno prikazali u skripti:

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

Provjera će pokazati koga smo spremili:

Get-VICredentialStoreItem

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

Sama skripta, na primjer: spojena, isključena, isključena 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. Zadano.cmd

Ista batch datoteka koju je pokrenuo 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 cmd - radi ispravno, isključuje ga.

Pokrećemo test naredbene datoteke s APC konzole (tamo postoji gumb Test) - ne radi.

Evo ga, taj nezgodan trenutak kada sav učinjeni posao nije doveo ni do čega.

5. Katarza

Gledamo u upravitelja zadataka, vidimo cmd trepće, powershell bljeska. Pogledajmo pobliže - cmd *32 i, prema tome, powershell *32. Razumijemo to Usluga APC agenta je 32-bitna, što znači da pokreće odgovarajuću konzolu.

Pokrećemo powershell x86 kao administrator i ponovno instaliramo i konfiguriramo PowerCLI iz koraka 3.

Pa, promijenimo liniju poziva powershell-a:

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

6. Sretan kraj!

Izvor: www.habr.com

Dodajte komentar