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 -ListAvailableOk, vediamo, installato:
Import-Module VMWare.PowerCLISì, 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-VICredentialStoreItemPossiamo 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
