Apagado correcto del hipervisor VMWare ESXi en el nivel crítico de la batería del SAI de APC

Hay muchos artículos sobre cómo configurar PowerChute Business Edition y cómo conectarse a VMWare desde PowerShell, pero de alguna manera no pude encontrar todo esto en un solo lugar, con una descripción de los puntos sutiles. Pero existen.

1. Entrada

A pesar de que tenemos cierta conexión 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 duran mucho. ¿Qué hacer? ¡Apagar!

Si bien todos los servidores eran físicos, todo iba bien, PowerChute Business Edition nos ayudó. Gratis, para 5 servidores, lo cual fue suficiente. Se instalaron un agente, un servidor y una consola en una sola máquina. A medida que se acercaba el final, el agente simplemente ejecutó un archivo de comando que enviaba Shutdown.exe /s /m a los servidores vecinos y luego apagaba su sistema operativo. Todo el mundo está vivo.
Entonces llegó el momento de las máquinas virtuales.

2. Antecedentes y reflexiones

¿Entonces que tenemos? Nada en absoluto: un servidor físico con 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.

Hemos oído hablar de NUT, pero aún no hemos podido estudiarlo; solo utilizamos lo que teníamos a mano, concretamente PowerChute Business Edition.

El hipervisor puede apagar sus máquinas virtuales por sí mismo; lo único que queda es decirle que es el momento. Existe algo tan útil como VMWare.PowerCLI, esta es una extensión para Windows Powershell que le permite conectarse al hipervisor y decirle todo lo que necesita. También existen muchos artículos sobre la configuración de PowerCLI.

3. El proceso

El UPS estaba físicamente conectado al puerto com del servidor 2008, afortunadamente estaba allí. Aunque esto no es importante, era posible conectarse a través de un 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 UPS: Windows Server 2008, a menos que se indique explícitamente lo contrario. Se instaló el agente PowerChute Business Edition. Aquí está el primer punto sutil: el servicio del agente no debe iniciarse desde el sistema, sino desde el usuario; de lo contrario, el agente no podrá ejecutar el archivo cmd.

A continuación instalamos .Net Framework 4.7. Es necesario reiniciar aquí, incluso si el marco no lo solicita explícitamente después de la instalación; de lo contrario, no continuará. Después, es posible que aún lleguen actualizaciones, que también deben instalarse.

A continuación instalamos PowerShell 5.1. También requiere un reinicio, incluso si él no pregunta.
A continuación, instale PowerCLI 11.5. Una versión bastante reciente, de ahí los requisitos anteriores. Puedes hacerlo 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 que tenemos instalado:

Import-Module VMWare.PowerCLI

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

Configuración de PowerShell.

  • Permitir la ejecución de cualquier script:

Set-ExecutionPolicy Unrestricted

  • O solo puede permitir que se ignoren los 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 PowerCLI sobre cómo unirse al programa de intercambio de experiencias; de lo contrario, habrá mucha información innecesaria en el registro:

Set-PowerCLIConfiguration -Scope User -ParticipateInCEIP $false

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

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

La verificación mostrará a quién salvamos:

Get-VICredentialStoreItem

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

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


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

4. Predeterminado.cmd

El mismo archivo por lotes que inicia el agente de APC. Se encuentra en “C:Archivos de programa[ (x86)]APCPowerChute Business Editionagentcmdfiles”, y dentro de:

"C:Windowssystem32WindowsPowerShellv1.0powershell.exe" -Archivo "C:...shutdown_hosts.ps1"
Parece que todo fue configurado y verificado, incluso iniciamos cmd: funciona correctamente, lo apaga.

Ejecutamos una prueba del archivo de comando desde la consola de APC (hay un botón Probar allí); no funciona.

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

5. Catarsis

Miramos el administrador de tareas, vemos cmd parpadea, powershell parpadea. Echemos un vistazo más de cerca: cmd *32 y, en consecuencia, powershell *32. Entendemos eso El servicio del agente APC es de 32 bits, lo que significa que ejecuta la consola correspondiente.

Iniciamos powershell x86 como administrador e instalamos y configuramos PowerCLI desde el paso 3 nuevamente.

Bueno, cambiemos la línea de llamada de PowerShell:

"C:Windows<b>SysWOW64</b>WindowsPowerShellv1.0powershell.exe…

6. ¡Final feliz!

Fuente: habr.com

Añadir un comentario