101 COSAS QUE PUEDES HACER CON CLOUD OS – Cosa 50

COSA # 50: ADMINISTRAR VMs EN HYPER-V

Bien amigos, dentro de esta serie de entregas acerca del Cloud OS de Microsoft, hoy les voy a hablar en particular de algunas de las cosas que se pueden hacer con Powershell para administrar mi plataforma de virtualización con Hyper-V.

Supongan por ejemplo que una vez a la semana deben apagar las máquinas virtuales para hacer un backup en frío o copia de seguridad de los VHDs y archivos de configuración de dichas máquinas (.XML). Con un simple script de Powershell pueden hacer esta tarea y a su volver a prenderlas cuando sea necesario y la tarea haya finalizado.

Basta con programar posteriormente una tarea recurrente que ejecute el proceso de apagado y de encendido de las VMs.

Antes de mostrar lo anterior, exploremos un poco las opciones para Hyper-V en Powershell. Para ello abrimos una sesión de Powershell ISE (para más detalles de cómo hacerlo vean este Post) y buscamos los comandos relacionados con Hyper-V como se ve en la siguiente imagen:

Powershell-para-VMs-01

Como lo ven hay muchos comandos relacionados con el tema.

Si quiero listar mis máquinas virtuales, pues usar el comando Get-VM y veré un resultado similar al siguiente:

Powershell-para-VMs-02

Observen que en este caso hay tres máquinas encendidas, que son las que dicen Running en la columna State.

Ahora supongamos que queremos ver la configuración de memoria de una máquina en particular, bien sea que esté apagada o encendida, para ello usamos el comando Get-VMMemory <Nombre máquina>. Ejemplo:

Powershell-para-VMs-03

Ya mi máquina lleva un tiempo arriba y quiero ver la estadísticas de rendimiento… muy bien pero antes debo habilitarlas pues por defecto no se encuentran habilitadas, así que primero debo hacerlo. El comando para ver estadísticas es Measure-VM <Nombre Máquina> pero si lo ejecutan antes de habilitar las estadísticas generará un error así que primero hay que ejecutar Enable-VMResourceMetering <Nombre Máquina>.

Veámoslo en la práctica, primero habilito las estadísticas en este ejemplo con Enable-VMResourceMetering "CentOS 6.5 Thin" a mi máquina a la cual quiero sacar todas las estadísticas:

Powershell-para-VMs-04 

Bueno, como lo ven aparentemente “no pasa nada” sólo se ejecuta el comando pero ya estamos listos.

Ahora sí ejecutamos el comando Measure-VM "CentOS 6.5 Thin" y veamos el resultado:

Powershell-para-VMs-05

Bueno, esta es una máquina de prueba así que el uso de recursos se ve muy tranquilo.

Esto está muy entretenido pero volvamos a lo que propuse al principio que es apagar y prender VMs. En realidad es muy sencillo: Stop-VM apaga la máquina virtual y Start-VM la enciende. Veamos:

Powershell-para-VMs-06

Observen que se apagó la VM y como para confirmar ejecuté el comando Get-VM.

Veamos un ejemplo de apagado aunque ya pueden intuir lo que va a pasar:

Powershell-para-VMs-07

Bueno, y si queremos poner eso en scripts (muy pero muy sencillos, sin validaciones adicionales) se haría así: un script que se llame por ejemplo apagarVMS.ps1 y que contenga la lista de máquinas a apagar y otro denominado encenderVMS.ps1 que contenga a su vez la lista de máquinas a encender.

Y si quiero que se haga de manera automática programo una tarea de apagado y otra de encendido usando el Task Scheduler o Programador de Tareas. simplemente lo invoco con la tecla Windows+R y escribo taskschd.msc:

Powershell-para-VMs-08

Una vez allí programamos una tarea. Mi máquina está en Inglés así que las imágenes se ven en Inglés pero en Español es muy similar.

Voy a poner las imágenes puesto que hablan por sí solas:

se hace clic derecho y se selecciona Create Basic Task:

Powershell-para-VMs-09 

Aquí le asignamos un nombre a la tarea:

Powershell-para-VMs-10 

En este ejemplo decidí que la tarea se va a hacer semanalmente:

Powershell-para-VMs-11

Los domingos:

Powershell-para-VMs-12

Aquí se le dice que se va a ejecutar un programa:

Powershell-para-VMs-13

Mi script se encuentra en c:\tmp y se llama apagarVMS.ps1

Powershell-para-VMs-14

Se presiona Finish para completar la tarea

Powershell-para-VMs-15

Aquí ya se ve que la tarea quedó programada

Powershell-para-VMs-16

Bueno, espero lo hayan disfrutado.

Si quieren hacer que el backup se haga en la nube de Azure, les recomiendo este Post

Recuerden que pueden descargar Windows Server 2012 R2 en http://technet.microsoft.com/en-us/evalcenter/dn205286.aspx 

¡Nos vemos en la próxima!