Spegnimento corretto dell'ipervisore VMware ESXi in caso di livello critico di carica della batteria dell'UPS APC

Nel vasto panorama ci sono molti articoli su come configurare PowerChute Business Edition e come connettersi a VMWare da PowerShell, ma non ho mai trovato tutto questo in un unico posto, con la descrizione delle sfumature. E ci sono.

1. Introduzione

Nonostante abbiamo una certa relazione con l'energia, i problemi di elettricità si verificano a volte. Qui entra in gioco l'UPS, ma purtroppo anche le sue batterie non sono durevoli. Cosa fare? Spegnere!

Finché tutti i server erano fisici, le cose andavano bene, PowerChute Business Edition ci ha aiutato. Gratuito, per 5 server, che era più che sufficiente. Su una macchina era installato l'agente, il server e la console. Quando si avvicinava la fine, l'agente eseguiva semplicemente uno script che inviava shutdown.exe /s /m ai server vicini, e poi spegneva il proprio sistema operativo. Tutti sono salvi.
Poi è arrivato il momento di macchine virtuali.

2. Dati e riflessioni

Quindi, cosa abbiamo? Proprio niente – 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 un UPS – APC Smart-UPS.

Abbiamo sentito parlare di NUT, ma finora non abbiamo avuto il tempo di studiarlo; abbiamo usato solo ciò che avevamo a disposizione, cioè PowerChute Business Edition.

L'iper-vizor è in grado di spegnere autonomamente le proprie macchine virtuali; bisogna solo avvisarlo. C'è un utile strumento chiamato VMWare.PowerCLI, un'estensione per Windows PowerShell, che consente di connettersi all'iper-vizor e comunicargli tutto ciò che è necessario. Ci sono anche molti articoli sui settaggi di PowerCLI disponibili online.

3. Processo

L'UPS è stato fisicamente collegato alla porta COM del server 2008, per fortuna era disponibile. Sebbene non sia fondamentale, si poteva collegare tramite un convertitore di interfaccia (MOXA) a qualsiasi server Windows virtuale. Tutte le operazioni successive si svolgono sulla macchina a cui è collegato l'UPS, cioè Windows Server 2008, a meno che non venga specificato diversamente. Su di essa è stato installato l'agente PowerChute Business Edition. Qui si trova il primo sottile dettaglio: il servizio dell'agente deve essere avviato non dal sistema, ma dall'utente, altrimenti l'agente non potrà eseguire il file cmd.

Successivamente, è stato installato .Net Framework 4.7. È necessaria una riavvio, anche se il framework non lo richiede esplicitamente dopo l'installazione, altrimenti non andrà avanti. Successivamente, potrebbero arrivare aggiornamenti che devono essere installati.

Dopo, è stato installato PowerShell 5.1. È necessaria una riavvio, anche se non lo richiede.
Procediamo con l'installazione di PowerCLI 11.5. Questa è una versione piuttosto recente, da qui i requisiti precedenti. Si può fare tramite internet, ci sono molti articoli a riguardo, ma noi l'abbiamo già scaricato, quindi abbiamo semplicemente copiato tutti i file nella cartella Modules.

Controllato:

Get-Module -ListAvailable

Ok, vediamo, installato:

Import-Module VMWare.PowerCLI

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

Impostazioni PowerShell.

  • Permettere l'esecuzione di script:

Set-ExecutionPolicy Unrestricted

  • Oppure consentire solo l'ignoranza dei certificati degli script:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned 

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

Set-PowerCLIConfiguration -InvalidCertificateAction ignore -confirm:$false

  • Sopprimere il messaggio di PowerCLI riguardo alla partecipazione al programma di feedback, altrimenti ci saranno molte informazioni superflue nel log:

Set-PowerCLIConfiguration -Scope User -ParticipateInCEIP $false

  • Salvare le credenziali dell'utente per accedere all'host VMWare, in modo da non doverle mostrare esplicitamente nello script:

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

Il controllo mostrerà chi abbiamo salvato:

Get-VICredentialStoreItem

Possiamo anche controllare la connessione: Connect-VIServer address.

Lo script stesso, ad esempio: ci siamo collegati, abbiamo spento, per sicurezza ci siamo disconnessi, possibili varianti:


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

4. Default.cmd

Quello è il file di comando 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 tutto sia stato configurato e verificato, abbiamo persino eseguito cmd – funziona correttamente, spegne.

Avviamo la verifica del file di comando dalla console APC (c'è un pulsante Test) – non funziona.

Ecco il momento imbarazzante, in cui tutto il lavoro svolto non ha prodotto alcun risultato.

5. Catarsi

Guardiamo il gestore attività, vediamo – è apparso cmd, è apparso powershell. Ci guardiamo attentamente – cmd *32 e, di conseguenza, powershell *32. Comprendiamo che il servizio dell'agente APC è a 32 bit, il che significa che 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