Desligamento correto do hipervisor VMWare ESXi no nível crítico de bateria do UPS APC

Nos espaços abertos existem muitos artigos sobre como configurar o PowerChute Business Edition e como se conectar ao VMWare do PowerShell, mas de alguma forma tudo isso não foi encontrado em um só lugar, com uma descrição dos pontos sutis. E eles são.



1. Introdução



Apesar de termos algo a ver com energia, às vezes surgem problemas com eletricidade. É aqui que o no-break entra em ação, mas suas baterias, infelizmente, não são duráveis. O que fazer? Desligar!



Contanto que todos os servidores fossem físicos, as coisas estavam indo bem, com o PowerChute Business Edition nos ajudando. Grátis, para 5 servidores, o que era suficiente. O agente, servidor e console foram instalados em uma máquina. À medida que o fim se aproximava, o agente simplesmente executava um arquivo em lote, no qual shutdown.exe / s / m era enviado aos servidores vizinhos e, em seguida, extinguia seu sistema operacional. Todo mundo está vivo.

Então chegou a hora das máquinas virtuais.



2. Antecedentes e reflexos



O que temos então? Absolutamente nada - um servidor físico executando o Windows Server 2008 R2 e um hipervisor com várias máquinas virtuais, incluindo Windows Server 2019, Windows Server 2003 e CentOS. E outro UPS - APC Smart-UPS.



Ouvimos falar do NUT, mas ainda não o colocamos em nossas mãos, usamos apenas o que estava à mão, ou seja, PowerChute Business Edition.



O hipervisor é capaz de desligar suas máquinas virtuais por conta própria, tudo o que resta é dizer a ele que é a hora. Existe uma coisa tão útil VMWare.PowerCLI é uma extensão para o Windows Powershell, apenas permitindo que você se conecte ao hipervisor e diga tudo o que você precisa. Existem também muitos artigos sobre as configurações do PowerCLI em espaços abertos.



3. Processo



O UPS estava fisicamente conectado à porta de comunicação do servidor 2008, desde então. Embora isso não seja essencial - era possível conectar através do conversor de interface (MOXA) a qualquer servidor Windows virtual. Além disso, todas as ações são executadas na máquina à qual o UPS está conectado - Windows Server 2008, a menos que seja explicitamente declarado o contrário. O agente PowerChute Business Edition foi instalado nele. Aqui está o primeiro ponto sutil: o serviço do agente deve ser iniciado não do sistema, mas do usuário, caso contrário, o agente não será capaz de executar o arquivo cmd.



Em seguida, instalamos o .Net Framework 4.7. Uma reinicialização é necessária aqui , mesmo se a estrutura não solicitar explicitamente por isso após a instalação, caso contrário, ela não irá adiante. Depois que as atualizações ainda vierem, você também precisará instalar.



Em seguida, instalamos o PowerShell 5.1.Uma reinicialização também é necessária , mesmo que não seja solicitada.

Em seguida, instale o PowerCLI 11.5. Uma versão bastante nova, a partir deste e dos requisitos anteriores. É possível pela Internet, existem muitos artigos sobre isso, mas já baixamos, então apenas copiamos todos os arquivos para a pasta Módulos.



Verificado:



Get-Module -ListAvailable


Ok, vemos, instalado:



Import-Module VMWare.PowerCLI


Sim, o console Powershell é obviamente iniciado a partir do Administrador.



Configurações do PowerShell.



  • Permitir a execução de qualquer script:


Set-ExecutionPolicy Unrestricted


  • Ou permita apenas ignorar certificados de script:


Set-ExecutionPolicy -ExecutionPolicy RemoteSigned 


  • Permitir que PowerCLI se conecte a servidores com certificados inválidos (expirados):


Set-PowerCLIConfiguration -InvalidCertificateAction ignore -confirm:$false


  • Suprima a saída da mensagem PowerCLI sobre a adesão ao programa de troca, caso contrário, haverá muitas coisas desnecessárias no log:


Set-PowerCLIConfiguration -Scope User -ParticipateInCEIP $false


  • Salve as credenciais do usuário para fazer login no host VMWare, de modo a não expô-las explicitamente no script:


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


A verificação mostrará quem salvamos:



Get-VICredentialStoreItem


Você também pode verificar a conexão: Endereço do Connect-VIServer.



O script em si, bem, por exemplo: conectado, extinto, desconectado apenas no caso, as opções são possíveis:




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


4. Default.cmd



O mesmo arquivo em lote que o agente APC inicia. Encontra-se em “C: \ Arquivos de programas [(x86)] \ APC \ PowerChute Business Edition \ agent \ cmdfiles” e dentro de:



“C: \ Windows \ system32 \ WindowsPowerShell \ v1.0 \ powershell.exe” -Arquivo “C : \ ... \ shutdown_hosts.ps1 "

Parece que tudo está configurado e verificado, até mesmo iniciado cmd - funciona corretamente, desliga.



Executamos a verificação do arquivo de comando no console da APC (há um botão Testar) - não funciona.



Aqui está, aquele momento embaraçoso quando todo o trabalho feito não levou a nada.



5. Catarse



Nós olhamos para o gerenciador de tarefas, vemos - cmd piscou, PowerShell piscou. Vamos dar uma olhada mais de perto - cmd * 32 e, conseqüentemente, powershell * 32. Entendemos que o serviço do agente APC é de 32 bits, o que significa que ele inicia o console correspondente.



Inicie o PowerShell x86 como administrador, instale e configure o PowerCLI a partir da etapa 3 novamente



e altere a linha para chamar o PowerShell:



"C:\Windows\<b>SysWOW64</b>\WindowsPowerShell\v1.0\powershell.exe…


6. Final feliz!




All Articles