Subir una máquina de VMware a Windows Azure IaaS

Si tenemos una máquina virtual, con Windows Server 2008 R2 SP1 o superior, sobre VMWare y hemos decidido que es el momento de migrarla a Windows Azure en este post os voy a mostrar cuáles son los pasos que debemos realizar:

Diferencia entre discos e imágenes

Antes de empezar, debemos tener claro cuál va a ser la finalidad de nuestro vhd. Cuando estamos trabajando con máquinas virtuales, hemos podido comprobar que tenemos dos apartados diferenciados: DISKS & IMAGES. ¿En cuál ubico mi vhd? Si queremos generar múltiples instancias de la máquina se trata de una IMAGE (necesitamos realizar un sysprep para ello); Si por el contrario no es un disco genérico y simplemente lo queremos para crear una única máquina virtual se trata de un DISK.
Una vez que tenemos claro qué tipo es el que queremos utilizar, comenzamos con la preparación de la máquina.

Preparando la máquina: desinstalar VMware Tools (y sysprep)

Antes de la subida, debemos llevar a cabo dos pasos:

  1. Deshacernos de las VMware Tools, ya que no serán de utilidad nunca más 🙂
  2. Lanzar Sysprep si queremos usar la máquina como imagen:
    %windir%system32sysprepsysprep.exe

    System Preparation Tool
    En el caso de que sólo queramos migrar la máquina, debemos asegurarnos de que la IP no permanezca fija (habilitar la obtención automática a través DHCP, tanto para la IP como el servidor DNS) y habilitar el acceso remoto de la máquina (este segundo punto se resuelve instalando VM Agent en la creación de la VM, gracias a la extensión VMAccess).

Conversión de vdkm a vhd: Microsoft Virtual Machine Converter Solution Accelerator

El siguiente paso es convertir la imagen vdkm a vhd, que es el formato soportado por Hyper-V y Windows Azure (por el momento el formato vhdx no está soportado en el cloud). Para ello haremos uso de Microsoft Virtual Machine Converter Solution Accelerator, la cual es una solución justamente pensada para ello. Abrimos una consola de Windows como administrador y ejecutamos lo siguiente:

"c:Program Files (x86)Microsoft Virtual Machine Converter Solution AcceleratorMVDC.exe" "c:Windows Server 2008 R2 x64Windows Server 2008 R2 x64.vmdk" "c:Windows Server 2008 R2 x64win2k8r2sp1.vhd"

El proceso tardará en función del tamaño de la máquina virtual. En mi caso, la imagen era de 40GB y tardó 40 minutos.

Instalar Hyper-V Integration Services

Otro punto importante es la instalación de Hyper-V Integration Services. Creamos una nueva máquina virtual en Hyper-V con el nuevo vhd y arrancamos la misma. A través del menú seleccionamos Action –> Insert Integration Services Setup Disk. Instalamos o actualizamos a la última versión y volvemos a realizar el sysprep, en el caso de ser necesario, para subir el disco a Windows Azure.

Subir imagen a través de Windows Azure Powershell

Si todavía no tienes instalado Windows Azure Powershell puedes hacerlo desde la página de descargas de Windows Azure

La primera vez que utilizamos la consola con una suscripción, es necesario recuperar el archivo con la configuración de la misma:

Get-AzurePublishSettingsFile

Este comando abrirá una ventana de nuestro navegador y descargará el archivo. Una vez lo hemos recuperado, importamos el mismo a través del siguiente comando:

Import-AzurePublishSettingsFile 'C:vmsMy-subscription.publishsettings'

Antes de realizar la subida, es necesario tener una cuenta de Windows Azure Storage creada, ya que es en ella donde se almacenará nuestro vhd.
Abrimos Windows Azure Powershell y utilizamos el comando Add-AzureVhd:

Add-AzureVhd -Destination "http://gisvhd.blob.core.windows.net/vhds/win2008r2sp1.vhd" -LocalFilePath "C:Windows Server 2008 R2 x64win2k8r2sp1.vhd" -NumberOfUploaderThreads 5

Este es el paso más largo con diferencia, ya que dependerá del ancho de banda que tengamos y el tamaño del disco que estamos subiendo.

Registrar una imagen

Existen dos maneras de registrar una imagen:

A través del portal, accedemos al apartado VIRTUAL MACHINES y en IMAGES seleccionamos Create.

Create an image from a VHD WinServer2008R2SP1

También podemos realizar este paso a través del comando Add-AzureVMImage de Windows Azure Powershell:

Add-AzureVMImage -ImageName "Windows_Server_2008_R2_SP1" -MediaLocation "http://gisvhd.blob.core.windows.net/vhds/win2008r2sp1.vhd" -OS Windows

Registrar un disco

En el caso de los DISKS, accedemos a VIRTUAL MACHINES –> DISKS –> Create:

Create a disk from a VHD non generalized

O bien a través de Add-AzureDisk:

Add-AzureDisk –DiskName "Windows_Server_2008_R2_SP1" –MediaLocation "http://gisvhd.blob.core.windows.net/vhds/win2008r2sp1.vhd" –OS Windows

Una vez que haya finalizado el registro de la imagen/disco, ya podemos crear una nueva máquina virtual desde el apartado MY IMAGES o MY DISKS de la galería.

Espero que haya sido de utilidad.

¡Saludos!