Na internetu je mnoho článků o tom, jak nastavit PowerChute Business Edition a jak se připojit k VMWare z PowerShell, ale všechno to nebylo na jednom místě, včetně popisu jemných detailů. A ty tu jsou.
1. Úvod
I když máme určité vazby na energetiku, problémy s elektrickým proudem občas nastávají. Zde přichází na scénu UPS, ale ani jeho baterie, bohužel, nemají dlouhou životnost. Co dělat? Vypnout!
Dokud byly všechny servery fyzické, šlo vše docela dobře, pomáhal nám PowerChute Business Edition. Zdarma, na 5 servery, což bylo naprosto dostatečné. Na jednom stroji byl nainstalován agent, server a konzole. Když se blížil konec, agent jednoduše spustil skript, který posílal na sousední servery příkaz shutdown.exe /s /m, a poté vypnul svůj operační systém. Všichni přežili.
Poté přišel čas virtuálních strojů.
2. Vstupní údaje a úvahy
Takže co máme? Celkem nic – jeden fyzický server s Windows Server 2008 R2 a jeden hypervizor s několika virtuálními stroji, mezi kterými jsou jak Windows Server 2019, tak Windows Server 2003, a CentOS. A také UPS – APC Smart-UPS.
O NUT jsme slyšeli, ale zatím jsme se k jeho studiu nedostali, použili jsme pouze to, co bylo po ruce, tedy PowerChute Business Edition.
Hypervizor umí sám ukončit provoz svých virtuálních strojů, zbývá mu jen říct, že je čas. Existuje užitečná věc VMWare.PowerCLI, což je rozšíření pro Windows PowerShell, které právě umožňuje připojit se k hypervizoru a říct mu vše, co potřebuje. O nastavení PowerCLI také existuje spousta článků na internetu.
3. Proces
UPS byl fyzicky připojen k sériovému portu serveru 2008, což bylo výhodné. I když to není zásadní – mohla se připojit přes rozhraní (MOXA) k jakémukoli virtuálnímu serveru Windows. Všechny akce se dále provádějí na stroji, ke kterému je UPS připojena – Windows Server 2008, pokud není výslovně uvedeno jinak. Na tomto serveru byl nainstalován agent PowerChute Business Edition. Zde se nachází první jemný detail: službu agenta je třeba spouštět ne ze systému, ale z uživatelského účtu, jinak agent nebude schopen spustit cmd-soubor.
Dále jsme nainstalovali .Net Framework 4.7. Zde je nutný restart, i když rámec to po instalaci výslovně nevyžaduje, jinak nepokračujeme. Poté mohou přijít další aktualizace, ty je také nutné nainstalovat.
Dále jsme nainstalovali PowerShell 5.1. Také je potřebný restart, i když to nevyžaduje.
Dále instalace PowerCLI 11.5. Poměrně čerstvá verze, a proto i předchozí požadavky. Můžete to udělat přes internet, je o tom mnoho článků, ale my jsme to už stáhli, takže jsme jednoduše zkopírovali všechny soubory do složky Modules.
Ověřili jsme:
Get-Module -ListAvailableOdkud, vidíme, nainstalovali jsme:
Import-Module VMWare.PowerCLIAno, konzole Powershell je samozřejmě spuštěna jako administrátor.
Nastavení Powershell.
- Povolit vykonávání jakýchkoliv skriptů:
Set-ExecutionPolicy Unrestricted- Nebo povolit pouze ignorování certifikátů skriptů:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned - Povolit PowerCLI připojení k serverům s neplatnými (expired) certifikáty:
Set-PowerCLIConfiguration -InvalidCertificateAction ignore -confirm:$false- Potlačit výstup zprávy PowerCLI o připojení k programu pro sdílení zkušeností, jinak bude v logu spousta zbytečných informací:
Set-PowerCLIConfiguration -Scope User -ParticipateInCEIP $false- Uložit uživatelské údaje pro přihlášení na hostitele VMWare, aby se nemusel explicitně zobrazovat ve skriptu:
New-VICredentialStoreItem -Host address -User user -Password 'password'Ověření ukáže, koho jsme uložili:
Get-VICredentialStoreItemMůžete také zkontrolovat připojení: Connect-VIServer address.
Samotný skript, například: připojení, vypnutí, pro jistotu odpojení, možné varianty:
Connect-VIserver -Server $vmhost
Stop-VMHost $vmhost -force -Confirm:$false
Disconnect-VIserver $vmhost -Confirm:$false
4. Default.cmd
Ten příslušný příkazový soubor, který spouští agent APC. Nachází se v "C:Program Files[ (x86)]APCPowerChute Business Editionagentcmdfiles", uvnitř:
"C:Windowssystem32WindowsPowerShellv1.0powershell.exe" -File "C:…shutdown_hosts.ps1"
Vypadá to, že jsme všechno nastavili a zkontrolovali, dokonce jsme spustili cmd – funguje to správně, vypíná.
Spouštíme z konzole APC kontrolu příkazového souboru (je tam tlačítko Test) – nefunguje.
A to je ten trapný moment, kdy veškerá vykonaná práce byla zbytečná.
5. Katarze
Sledujeme správce úloh, vidíme – chvíli běžel cmd, chvíli powershell. Sledujeme pozorněji – cmd *32 a odpovídajícím způsobem powershell *32. Uvědomujeme si, že služba agenta APC je 32bitová, a proto spouští odpovídající konzoli.
Spouštíme powershell x86 jako administrátor, provádíme znovu instalaci a nastavení PowerCLI podle bodu 3.
A měníme řádek pro volání powershell:
"C:Windows<b>SysWOW64</b>WindowsPowerShellv1.0powershell.exe…6. Šťastný konec!
Zdroj: habr.com
