Apagado correcto del hipervisor VMWare ESXi al nivel crítico de la batería del UPS de APC

En los espacios abiertos hay muchos artículos sobre cómo configurar PowerChute Business Edition, y cómo conectarse a VMWare desde PowerShell, pero de alguna manera todo esto no se encontró en un solo lugar, con una descripción de los puntos sutiles. Y estan.



1. Introducción



A pesar de que tenemos algo que ver con la energía, a veces surgen problemas con la electricidad. Aquí es donde entra en juego el UPS, pero sus baterías, lamentablemente, no son duraderas. ¿Qué hacer? ¡Apagar!



Mientras todos los servidores fueran físicos, las cosas iban bien, con la PowerChute Business Edition ayudándonos. Gratis, para 5 servidores, que fue suficiente. El agente, el servidor y la consola se instalaron en una máquina. A medida que se acercaba el final, el agente simplemente ejecutaba un archivo por lotes, en el que se enviaba shutdown.exe / s / m a los servidores vecinos y luego apagaba su sistema operativo. Todo el mundo está vivo.

Luego llegó el momento de las máquinas virtuales.



2. Antecedentes y reflexiones



¿Entonces que tenemos? Nada en absoluto: un servidor físico que ejecuta Windows Server 2008 R2 y un hipervisor con varias máquinas virtuales, incluidos Windows Server 2019, Windows Server 2003 y CentOS. Y otro UPS: APC Smart-UPS.



Escuchamos acerca de NUT, pero aún no lo teníamos en nuestras manos, usamos solo lo que teníamos a mano, a saber, PowerChute Business Edition.



El hipervisor puede apagar sus máquinas virtuales por sí solo, todo lo que queda es decirle que es el momento. Existe una cosa tan útil VMWare.PowerCLI es una extensión para Windows Powershell, que simplemente le permite conectarse al hipervisor y decirle todo lo que necesita. También hay muchos artículos sobre la configuración de PowerCLI en espacios abiertos.



3. Proceso



El SAI se conectó físicamente al puerto com del servidor 2008, ya que lo estaba. Aunque esto no es esencial, fue posible conectarse a través del convertidor de interfaz (MOXA) a cualquier servidor virtual de Windows. Además, todas las acciones se realizan en la máquina a la que está conectado el SAI, Windows Server 2008, a menos que se indique explícitamente lo contrario. Se instaló el agente de PowerChute Business Edition. Aquí está el primer punto sutil: el servicio del agente debe iniciarse no desde el sistema, sino desde el usuario, de lo contrario, el agente no podrá ejecutar el archivo cmd.



Luego instalamos .Net Framework 4.7. Aquí es necesario reiniciar , incluso si el marco no lo solicita explícitamente después de la instalación, de lo contrario, no irá más allá. Después de eso, las actualizaciones aún pueden llegar, también debe instalarlo.



A continuación, instalamos PowerShell 5.1.También es necesario reiniciar , incluso si no se solicita.

A continuación, instale PowerCLI 11.5. Una versión bastante nueva, de este y los requisitos anteriores. Es posible a través de Internet, hay muchos artículos sobre esto, pero ya lo descargamos, así que simplemente copiamos todos los archivos a la carpeta Módulos.



Comprobado:



Get-Module -ListAvailable


Ok, vemos, instalado:



Import-Module VMWare.PowerCLI


Sí, la consola Powershell, por supuesto, se inicia desde el Administrador.



Configuración de Powershell.



  • Permitir la ejecución de cualquier script:


Set-ExecutionPolicy Unrestricted


  • O permitir solo ignorar certificados de script:


Set-ExecutionPolicy -ExecutionPolicy RemoteSigned 


  • Permita que PowerCLI se conecte a servidores con certificados no válidos (caducados):


Set-PowerCLIConfiguration -InvalidCertificateAction ignore -confirm:$false


  • Suprima la salida del mensaje de PowerCLI sobre unirse al programa de intercambio, de lo contrario, habrá muchas cosas innecesarias en el registro:


Set-PowerCLIConfiguration -Scope User -ParticipateInCEIP $false


  • Guarde las credenciales de usuario para iniciar sesión en el host VMWare, para no exponerlas explícitamente en el script:


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


La comprobación mostrará a quién hemos salvado:



Get-VICredentialStoreItem


También puede comprobar la conexión: Dirección Connect-VIServer.



El script en sí, bueno, por ejemplo: conectado, apagado, desconectado por si acaso, las opciones son posibles:




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


4. Default.cmd



El mismo archivo por lotes que lanza el agente de APC. Se encuentra en “C: \ Archivos de programa [(x86)] \ APC \ PowerChute Business Edition \ agent \ cmdfiles” y dentro:



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

Parece que todo se configuró y comprobó, incluso se inició cmd - funciona correctamente, lo apaga.



Ejecutamos la verificación del archivo de comando desde la consola de APC (hay un botón de Prueba); no funciona.



Aquí está, ese momento incómodo en el que todo el trabajo realizado no condujo a nada.



5. Catarsis



Miramos el administrador de tareas, vemos: cmd parpadeó, powershell parpadeó. Echamos un vistazo más de cerca: cmd * 32 y, en consecuencia, powershell * 32. Entendemos que el servicio del agente de APC es de 32 bits, lo que significa que inicia la consola correspondiente.



Inicie powershell x86 como administrador, instale y configure PowerCLI desde el paso 3 nuevamente



y cambie la línea para llamar a powershell:



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


6. ¡Feliz final!




All Articles