Chiusura corretta del hypervisor VMWare ESXi in caso di livello critico della batteria dell'UPS APC

Ci sono molti articoli su come configurare PowerChute Business Edition e connettersi a VMWare da PowerShell, ma non ho trovato tutto in un unico posto, con la descrizione delle sottigliezze. E ce ne sono.

1. Introduzione

Nonostante abbiamo qualche relazione con l'energia, a volte sorgono problemi con l'elettricità. Qui entra in gioco l'UPS, ma anche le sue batterie, ahimè, non sono durevoli. Cosa fare? Spegnere!

Finché tutti i server erano fisici, le cose andavano bene, ci ha aiutato PowerChute Business Edition. Gratuita, per 5 server, il che era più che sufficiente. Su una macchina è stato installato un agente, il server e la console. Avvicinandosi alla fine, l'agente eseguiva semplicemente un file batch, nel quale veniva inviato shutdown.exe /s /m ai server vicini, e poi spegneva il suo sistema operativo. Tutti sono salvi.
Poi è arrivato il momento macchine virtuali.

2. Dati di base e riflessioni

Quindi, cosa abbiamo? Non molto – un server fisico con Windows Server 2008 R2 e un hypervisor con diverse macchine virtuali, tra cui Windows Server 2019, Windows Server 2003 e CentOS. E anche un UPS – APC Smart-UPS.

Abbiamo sentito parlare di NUT, ma non abbiamo ancora avuto modo di studiarlo, abbiamo utilizzato solo ciò che avevamo a disposizione, cioè PowerChute Business Edition.

L'hypervisor è in grado di spegnere autonomamente le sue macchine virtuali, resta solo da comunicargli quando è il momento. Esiste una cosa utile chiamata VMWare.PowerCLI, un'estensione per Windows Powershell, che consente di connettersi all'hypervisor e comunicargli tutto ciò di cui ha bisogno. Anche per la configurazione di PowerCLI ci sono molti articoli a disposizione.

3. Processo

Abbiamo collegato fisicamente l'UPS alla porta com del server 2008, per fortuna ce n'era una. Anche se non è fondamentale – si può connettersi tramite un convertitore di interfaccia (MOXA) a qualsiasi server Windows virtuale. Tutte le azioni successive verranno eseguite sulla macchina a cui è collegato l'UPS – Windows Server 2008, se non diversamente specificato. Su di essa è stato installato l'agente PowerChute Business Edition. Ecco un primo dettaglio importante: il servizio agente deve essere avviato non dal sistema, ma dall'utente, altrimenti l'agente non sarà in grado di eseguire il file cmd.

Successivamente abbiamo installato .Net Framework 4.7. Qui è richiesto un riavvio, anche se il framework non lo richiede esplicitamente dopo l'installazione, altrimenti non procederà. Dopo potrebbero arrivare anche aggiornamenti, che devono essere installati.

Poi abbiamo installato PowerShell 5.1. È necessaria anche una riavvio., anche se non lo richiede.
Dopo, installazione di PowerCLI 11.5. È una versione abbastanza recente, da questo derivano anche i requisiti precedenti. Possiamo farlo tramite internet, su questo ci sono molti articoli, ma noi lo avevamo già scaricato, quindi abbiamo semplicemente copiato tutti i file nella cartella Modules.

Controllato:

Get-Module -ListAvailable

Ok, vediamo, abbiamo installato:

Import-Module VMWare.PowerCLI

Sì, la console Powershell è ovviamente avviata come Amministratore.

Impostazioni Powershell.

  • Consentire l'esecuzione di qualsiasi script:

Set-ExecutionPolicy Unrestricted

  • Oppure consentire solo di ignorare i certificati degli script:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned 

  • Consentire a PowerCLI di connettersi ai server con certificati non validi (scaduti):

Set-PowerCLIConfiguration -InvalidCertificateAction ignore -confirm:$false

  • Silenziare il messaggio di PowerCLI sulla partecipazione al programma di scambio esperienze, altrimenti ci saranno molte informazioni superflue nel log:

Set-PowerCLIConfiguration -Scope User -ParticipateInCEIP $false

  • Salvare le credenziali dell'utente per l'accesso all'host VMWare, per non rivelarle esplicitamente nello script:

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

Il controllo mostrerà chi abbiamo salvato:

Get-VICredentialStoreItem

Possiamo verificare anche la connessione: Connect-VIServer address.

Lo script stesso, ad esempio: connessi, spento, per sicurezza disconnessi, esistono varie opzioni:


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

4. Default.cmd

Quello stesso file batch che viene eseguito dall'agente APC. Si trova in “C:Program Files[(x86)]APCPowerChute Business Editionagentcmdfiles”, e all'interno:

«C:Windowssystem32WindowsPowerShellv1.0powershell.exe» -File «C:…shutdown_hosts.ps1»
Sembra che abbiamo configurato e verificato tutto, abbiamo persino avviato cmd – funziona correttamente, spegne.

Avviamo dal console APC il controllo del file batch (c'è un pulsante Test) – non funziona.

Ecco il momento imbarazzante, quando tutto il lavoro svolto non ha portato a niente.

5. Catarsi

Guardiamo il Task Manager, vediamo – è comparso cmd, è comparso powershell. Guardiamo più attentamente – cmd *32 e, di conseguenza, powershell *32. Comprendiamo che il servizio agente APC è a 32 bit, e quindi avvia la console corrispondente.

Avviamo powershell x86 come amministratore, ripetiamo l'installazione e la configurazione di PowerCLI dal punto 3.

E cambiamo la riga di chiamata di powershell:

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

6. Happy end!

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster