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