Intro
Si bien este no es un post especifico sobre seguridad. El contenido nos pareció interesante comentarlo dado que se nos presentó esta situación real y fue difícil conseguir la información.
Nota: Todas las configuraciones indicadas en este post fueron realizadas sobre un hypervisor VMWare ESXi 6.0 free. Es probable que los pasos sean diferentes para otras versiones de hypervisor. Realizo esta aclaración dado que decidí escribir este post al intentar seguir las indicaciones de varios posts para otras versiones (sin tener éxito).
Por cuestiones laborales surgió la necesidad de poder apagar hypervisores ESXi en su versión gratuita.
Escenario:
- Interrupción de energía
- UPS alcanzando el umbral de condición crítica
- Necesidad de apagar los hypervisores.
- Idealmente también se requería apagar correctamente las máquinas virtuales (en forma previa al apagado del hypervisor).
En este post no está detallado como monitorear el estado de las UPS, cosa a la que probablemente dedique otro post. El objetivo de este post es comentar como configurar un host ESXi y las máquinas virtuales, para que frente a un apagado ordenado, todo suceda “suavemente”.
La documentación de VMWare brinda algunas pistas sobre cómo se podría abordar este tema. [1]
En varios lugares en Internet indican como una opción apropiada el uso de la máquina virtual con vMA. La cuestión es que investigando, ciertas funciones de vMA solo están disponibles para las versiones pagas de hypervisor. En este caso justamente las funciones que necesitaba se encontraban limitadas.
Continué navegando por Internet y encontré el siguiente script en github: ESXiDown. [2] Sin embargo, referenciado por el propio autor de ese script, llegamos a una solución más simple que es la que vamos a mostrar. [3]
En las siguientes secciones voy a explicar (en forma más o menos detallada) como configurar todo para que los equipos se apaguen correctamente y luego se produzca el apagado del hypervisor.
Pre –requisitos:
- El host ESXi debe tener SSH habilitado.
- Todas las máquinas virtuales deben tener instaladas las herramientas de VMWare.
- Todas las máquinas virtuales deben tener configurada la opción “Detener con el sistema”. Para verificarlo, se puede ingresar al host ESXi “Configuración “ [4]
Para habilitarlo clickear en “propiedades” y asegurarse que la “acción de apagado” sea “apagado de invitado”
La demora al apagar es cuanto tiempo de gracia se le dará la VM para que se apague, cumplido ese lapso se apagara de forma forzada.
Acciones a ejecutar para el apagado
Cumplidos estos pre requisitos, para el apagado se debe ejecutar los siguientes comandos consecutivamente via SSH:
/sbin/shutdown.sh && /sbin/poweroff
La construcción && implica que se debe terminar de ejecutar el primer comando para ejecutar el segundo.
Estos comandos se pueden ejecutar desde otro equipo mediante SSH e incluso integrar estas acciones en un script, que accione sobre los distintos hypervisores.
En mi caso particular cree un script llamado shut.sh (para que no se confunda con el script shutdown.sh existente en ESXi) y fije los permisos del script para que solo pueda ser ejecutado por root.
La única línea del script era la siguiente:
/sbin/shutdown.sh && /sbin/poweroff
Comentarios finales
También es interesante mencionar, que esta misma configuración es válida para apagar el hypervisor desde el cliente vSphere, por lo que es una buena alternativa si tenemos instalaciones ESXi free no administradas por vCenter.
Un comentario final, si las máquinas virtuales a apagar son servidores Windows 2008 o superior, al volver a iniciar las mismas, Windows nos solicitará especificar el motivo por el cual cada máquina se apagó de forma “inesperada”. Sobre este punto seguramente escribiré otro post, con una idea de cómo se podría apagar esos equipos centralizadamente y especificando el motivo.
Referencias:
[1] Luego de bastante búsqueda por Internet, llegue al siguiente artículo de la KB de vmware: KB1014165
[2] https://github.com/sixdimensionalarray/esxidown/
[3] http://www.nojokeit.com/2013/02/shut-down-esxi-51-guest-vms-and-host.html
[4] https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=850
1 comentario
Persistiendo tareas programadas (cron) en ESXi Free edition - BlackMantiSecurity · 4 marzo, 2019 a las 6:57 pm
[…] El host y las máquinas virtuales se encontraban configuradas para apagarse correctamente, como se comentó en el siguiente post […]