[HOW-TO] Hyper-V | Administración Básica de Hyper-V 3 mediante PowerShell en Windows Server 2012
Hyper-V es la plataforma de virtualización de Microsoft. Su administración puede hacerse mediante la consola de administración “Hyper-V Manager” existente en Windows Server. Sin embargo, también existe la posibilidad de administrar casi todas sus funcionalidades mediante PowerShell.
Durante la instalación del rol, podemos optar por instalar las herramientas de administración, entre las cuales está la extensión para PowerShell. Mediate esta extensión, podemos crear equipos modificarlos y manejar aspectos de configuración varios en Hyper-V.
Este artículo está creado bajo la plataforma Windows Server 2012, es decir la versión 3 de Hyper-V. Esta versión tiene la particularidad que posee una versión “in-the-box” de los command lets de Hyper-V para PowerShell, algo que no sucedía en versiones anteriores.
[toc]
Introducción
Objetivo
El presente documento tiene como objetivo dar una visión general sobre la administración de Hyper-V a través de PowerShell, y demostrar cómo las organizaciones se pueden ver beneficiadas con la agil administración mediante línea de comandos en Windows Server 2012.
Audiencia
Este documento está dirigido a Consultores, Profesionales IT y personas que desarrollan tareas de Consultoría, Administración y Soporte o que simplemente están interesados en aprender nuevas cosas.
Comentarios y Corrección de Errores
Hemos realizado nuestro mejor esfuerzo para no cometer errores, pero al fin y al cabo somos seres humanos. Si deseás reportar algún error o darnos feedback de qué te pareció esta publicación, por favor no dejes de comunicarte con nosotros a través de correo electrónico a la siguiente dirección: info@tectimes.net.
Alcance
Entender cuál es el alcance de la publicación nos ayuda a tener una expectativa real de lo que encontraremos en la misma, de modo tal que quién lo lee no espere ni más ni menos de lo que encontrará. Vamos a describir el escenario de trabajo, tecnologías alcanzadas, la bitácora y el objetivo técnico.
Objetivo Técnico
El objetivo técnico de esta publicación es:
- Ejemplificar la creación, edición y eliminación de una máquina virtual mediante PowerShell.
- Ejemplificar la administración de algunas opciones generales de Hyper-V mediante PowerShell.
Daremos como cumplido el objetivo técnico cuando procuremos:
- Tener una Visión General de PowerShell para Hyper-V.
- Poder realizar el ABM de Equipo Virtual con PowerShell.
- Poder realizar Snapshots de VMs con PowerShell.
Tecnologías Alcanzadas
Esta publicación puede aplicarse a:
- Hyper-V en Windows Server 2012.
- Windows Server 2012 Standard
- Windows Server 2012 Datacenter.
- Windows Server 2012 R2 Standard.
- Windows Server 2012 R2 Datacenter.
Escenario de Trabajo
Tenemos, para este artículo, un equipo con Windows Server 2012 Datacenter y Hyper-V 3 instalado. El equipo tiene las siguientes características:
- 16 GB de memoria RAM.
- 1 placa de red física.
- Storage local en el disco “E”.
Desarrollo
Visión General de PowerShell para Hyper-V
En Windows Server 2012, Hyper-V 3 tiene módulos para PowerShell, los cuales incluyen más de 160 cmdlets (command-lets) que permiten administrar y automatizar tareas varias. En las “Referencias y Links” de este artículo, se encontrará un link de Microsoft a un listado con todos los cmdlets disponibles para Hyper-V en Windows Server 2012.
La importancia de poder contar con estos cmdlets recide en que podemos automatizar muchas tareas mediante líneas de comandos. Si bien a veces preferimos una administración gráfica de la plataforma, es sumamente importante conocer y utilizar, como administradores de una plataforma de virtualización, éstas posibilidades del Shell.
A partir de Windows Server 2012, existe la novedad que el módulo de Hyper-V para PowerShell está “in-the-box”, o sea que no requiere de descargas adicionales como suponía Windows Server 2008! Sin embargo, este módulo debe ser habilitado: no sólo el de Hyper-V, sino la de las herramientas de administración incluyendo PowerShell. En los “Artículos Relacionados” encontrarás un link al “TUTORIAL – Instalación de Hyper-V en Windows Server 2012” donde se explica en detalle como instalar estas herramientas.
Cómo empezar
Para comenzar, debemos abrir “Windows PowerShell”:
Esto nos abrirá la consola PowerShell de Windows:
En primera instancia, no debemos agregar o importar ningún módulo especial para comenzar a hacer uso de los cmdlets de Hyper-V. Sin embargo, algo que podemos hacer es actualizar la ayuda del módulo “Hyper-V” en PowerShell mediante el siguiente comando:
Update-Help –Module Hyper-V
Una vez hecho esto tenemos la última ayuda disponible para Hyper-V desde PowerShell
ABM de Equipo Virtual con PowerShell
Vamos a comenzar ejemplificando el alta, la modificación y eliminación de un equipo virtual en Hyper-V mediante el módulo de Hyper-v para PowerShell de Windows Server 2012.
Alta de Equipo
El comando que nos permite dar de alta equipos es “new-vm”. Podemos consultar la ayuda de este comando mediante:
Get-Help New-VM
Nótese que la posibilidad de pedir ayuda es aplicable para todos los comandos que veremos en este artículo, siempre respetando la siguiente sintaxis:
Get-Help [nombre del comando]
Vamos a poner manos a la obra: vamos a crear un equipo llamado “Equipo1” con las siguientes características:
- Se llamará “Equipo1”
- Tendrá 1 GB de memoria asignada.
- Se instalará en el Path “E:\Virtuales\”
El comando a ejecutar será el siguiente:
New-VM -Name "Equipo1" -Memory 1gb -Path "E:\Virtuales"
Podemos comprobar mediante nuestra consola “Hyper-V Manager” que el equipo se ha creado:
Ahora bien, también podemos comprobar, mediante interfaz gráfica, que no tiene disco asignado para el sistema operativo:
Tampoco tiene una placa de red disponible:
¿Podemos hacer algo mejor? Si, por supuesto! Podemos completar aún más el comando anteriormente ejecutado para crear un equipo virtual con disco. Vamos a crear un segundo equipo con las siguientes características:
- Se llamará “Equipo2”
- Tendrá 1 GB de memoria asignada.
- Se instalará en el Path “E:\Virtuales\”.
- Tendrá un disco de 50 GB llamado “Equipo2.vhdx”.
- Utilizará el Virtual Switch existente llamado “Realtek PCIe GBE Family Controller – Virtual Switch”
El comando sería el siguiente:
New-VM -Name "Equipo2" -Memory 1gb -Path "E:\Virtuales" -SwitchName "Realtek PCIe GBE Family Controller - Virtual Switch" -NewVHDPath "E:\Virtuales\Equipo2\Equipo2.vhdx" -NewVHDSizeBytes 50gb
Una vez ejecutado tenemos el siguiente resultado:
Podemos comprobar, mediante interfaz gráfica, que el disco se ha creado y la placa de red se ha asignado:
Modificación de Equipo
Supongamos que queremos modificar un equipo virtual. Por ejemplo, en nuestro caso, queremos agregarle un disco y asignarle la placa de red al “Equipo1” recientemente creado. Para poder realizar esta acción, vamos a hacer uso de algunos CMDLets:
- New-VHD
- Add-VMHardDiskDrive
- Add-VMNetworkAdapter
- Connect–VMNetworkAdapter
New-VHD
Con este CMDLet le vamos a crear un disco de 50 GB con el nombre Equipo1.vhdx. La sintaxis es la siguiente:
New-VHD -Path "E:\Virtuales\Equipo1\Equipo1.vhdx" -SizeBytes 50gb
El resultado es el siguiente:
Podemos corroborar como el disco se ha creado en la ubicación seleccionada:
Ahora vamos a asignarlo al equipo virtual “Equipo1” mediante el CMDLet Add-VMHardDiskDrive.
Add-VMHardDiskDrive
Vamos a agregar el disco recientemente creado al equipo “Equipo1”. El disco está en la ubicación “E:\Virtuales\Equipo1\Equipo1.vhdx”. El comando sería:
Add-VMHardDiskDrive -VMName "Equipo1" -Path "E:\Virtuales\Equipo1\Equipo1.vhdx"
El resultado esperado es el siguiente:
Y vamos a corroborar como el Equipo1 ahora tiene disco:
Add-VMNetworkAdapter
Nuestro Hyper-V ya tiene un Virtual Swtich, suponiendo que hemos seguido los pasos de instalación del rol indicados en el tutorial relacionado al final de este artículo que se llama “TUTORIAL – Instalación de Hyper-V en Windows Server 2012”. Si no es así, debemos revisarlo para continuar.
El nombre del adaptador virtual, en nuestro caso, es: “Realtek PCIe GBE Family Controller – Virtual Switch”.
Vamos a utilizar este adaptador para agregarlo a nuestro equipo “Equipo1” a través del siguiente comando:
Add-VMNetworkAdapter -VMName "Equipo1" -Name "Realtek PCIe GBE Family Controller - Virtual Switch"
El resultado es el siguiente:
Connect-VMNetworkAdapter
Muy bien, ahora vamos a conectar (poner on-line) el Switch Virtual al equipo “Equipo1”. Esto lo haremos mediante el siguiente comando:
Connect-VMNetworkAdapter -VMName "Equipo1" -SwitchName "Realtek PCIe GBE Family Controller - Virtual Switch"
El resultado esperado es:
Y podemos verificar, mediante las propiedades del Equipo Virtual, la conexión del Virtual Switch:
Encendido y Apagado de Equipos
Ya tenemos los equipos configurados, ahora vamos a encenderlos. Para encenderlos, podemos utilizar el comando:
Start-VM -VMName "Equipo1"
Y podemos corroborar el estado del equipo:
También podemos apagar el equipo (ojo, esto fuerza el apagado!) mediante el siguiente comando:
Stop-VM -VMName "Equipo1"
El resultado es el siguiente:
Si verificamos el estado del equipo, el mismo estará apagado:
Listado de Equipos
Para obtener un listado de los equipos y su estado, podemos hacer uso del siguiente CMDLet:
Get-VM
El resultado es el siguiente:
Eliminación de Equipo
Así como creamos equipos, también podemos eliminarlo a través del siguiente CMDLet:
Remove-VM -VMName "Equipo1"
El resultado será el siguiente:
Y nuestro equipo ya no estará en el sistema:
Sin embargo, el VHDX del equipo no se borrará:
Snapshots de VMs con PowerShell
Un Snapshot es una “foto” que se puede hacer del equipo virtual, para luego volver a él o para resguardar el equipo antes de hacer un cambio que pueda llegar a ser crítico. Cuando creamos un snapshot, él se crea un disco diferencial (AVHD) que guarda solo los nuevos cambios desde dicho snapshot razón por la cual la creación de esta foto es sumamente rápida. Un Snapshot, en resumen, captura el estado, datos y configuración de hardware de un equipo virtual.
El módulo de Hyper-V para PowerShell nos permite trabajar con Snapshot, pudiendo:
- Crearlos.
- Listarlos.
- Utilizarlos.
- Eliminarlos.
Veremos, rápidamente, como se realizan estas operaciones.
Creación de un Snapshot con PowerShell para Hyper-V
Para crear un snapshot utilizaremos el CMDLet “Checkpoint-VM”. Vamos a crear, por ejemplo, un snapshot (foto) del Equipo2 con el nombre “Antes de ejecutar updates” con la siguiente sintaxis:
Checkpoint-VM -Name "Equipo2" -SnapshotName "Antes de ejecutar updates"
El resultado es el siguiente:
Para verificar que el snapshot se creó, podemos verificarlo desde la consola “Hyper-V Manager”:
Listado de Snapshots
Vamos a listar los snapshots disponibles. Para ello utilizaremos el CMDLet “Get-VMSnapshot” con la siguiente sintaxis:
Get-VMSnapshot -VMName "Equipo2"
Veremos que existen 3 snapshots:
De esta forma podemos identificar cuáles snapshots están disponibles para utilizar.
Aplicar un Snapshot para rollback de un equipo
Vamos a utilizar el snapshot “Antes de configurar Software1” para volver al equipo virtual al estado que tenía en ese momento. Para esto utilizaremos el CMDLet “Restore-VMSnapshot” con la siguiente sintaxis:
Restore-VMSnapshot -VMName "Equipo2" -Name "Antes de configurar Software1"
El resultado será el siguiente:
De este modo, podemos comprobar que el equipo volvió al estado en que se encontraba luego de dicho snapshot:
Eliminación de Snapshots
Para eliminar un snapshot, debemos utilizar el CMDLet “Remove-VMSnapshot” con la siguiente sintaxis:
Remove-VMSnapshot -VMName "Equipo2" -Name "Antes de ejecutar updates" -IncludeAllChildSnapshots
El parámetro “IncludeAllChildSnapshots” nos permite eliminar todos los snapshots que estén debajo del que eliminamos. En nuestro caso vamos a eliminar el primer snapshot, razón por la cual se deberían eliminar todos los restantes:
Comprobamos que ya no existen snapshots para el Equipo2:
Conclusiones
El módulo de PowerShell de Hyper-V es una potente herramienta que nos permite administrar, de punta a punta, nuestra plataforma Virtual. La utilización de PowerShell nos puede hacer ganar tiempo y automatización, dado que podemos hacer y preparar scripts que ejecuten tareas deseadas sin necesidad de utilizar el entorno gráfico.
En este artículo hemos visto solo una parte de las posibilidades de administración de Hyper-V mediante PowerShell, pero creemos que ha sido una muestra clara de su simpleza y potencialidad.
Al pie de este artículo se dejan accesos a material de Microsoft, como así también algunos artículos relacionados.
Referencias y Links
- Hyper-V Cmdlets in Windows PowerShell: http://technet.microsoft.com/library/hh848559.aspx
- Hyper-V Module for Windows PowerShell: http://technet.microsoft.com/en-us/library/hh846767.aspx
- New-VM: http://technet.microsoft.com/es-ES/library/hh848537.aspx
- New-VHD: http://technet.microsoft.com/es-ES/library/hh848503.aspx
- Add-VMHardDiskDrive: http://technet.microsoft.com/en-us/library/hh848470.aspx
- Add-VMNetworkAdapter: http://technet.microsoft.com/es-ES/library/hh848564.aspx
- Connect-VMNetworkAdapter: http://technet.microsoft.com/es-ES/library/hh848496.aspx
- Start-VM: http://technet.microsoft.com/es-ES/library/hh848589.aspx
- Stop-VM: http://technet.microsoft.com/es-ES/library/hh848468.aspx
- Remove-VM: http://technet.microsoft.com/es-ES/library/hh848489.aspx
- Checkpoint-VM: http://technet.microsoft.com/es-ES/library/hh848539.aspx
- Get-VMSnapshot: http://technet.microsoft.com/es-ES/library/hh848569.aspx
- Restore-VMSnapshot: http://technet.microsoft.com/es-ES/library/hh848480.aspx
- Remove-VMSnapshot: http://technet.microsoft.com/es-ES/library/hh848601.aspx
- Hyper-V Virtual Machine Snapshots – FAQ: http://technet.microsoft.com/en-us/library/dd560637(v=ws.10).aspx