Dave Rendón Microsoft Azure MVP, embracing and fostering tech intensity to benefit society and thrive in a digital world.

Migrar un VHD a Azure con Powershell

2 min read

Migrar VHD a Azure con Powershell - Wiki Azure

Este artículo veremos cómo migrar un VHD a Azure con Powershell, en este caso un KEMP LoadMaster Hyper-v para que puedas utilizarlo como una imagen para crear máquinas virtuales en Azure.

Una de las características interesantes de Azure es la flexibilidad para migrar VHD´s. Esto significa que puedes cargar y descargar VHD´s hacia y desde la nube.

Video:

 Migrar VHD a Azure con Powershell



Consideraciones:

En este artículo migraremos una máquina virtual KEMP LoadMaster Hyper-v hacia Azure. Se puede descargar desde aquí: kemptechnologies.com/vlm-download/

El formato VHDx no está soportado en Microsoft Azure, puedes convertir el disco en formato VHD mediante el Administrador de Hyper-V o el cmdlet Convert-VHD.

Pre-requisitos:

Una suscripción activa de Azure

Azure PowerShell versión 1.4 o superior – Si no lo tienes instalado, Cómo instalar y configurar Azure PowerShell.

Una máquina virtual – Hay muchas herramientas para crear máquinas virtuales  on-premise, en este ejemplo utilizaremos esta máquina virtual: kemptechnologies.com/vlm-download/

Asegúrate de que los roles de servidor se ejecutan de manera correcta con sysprep. Para obtener más información, consulta Compatibilidad de Sysprep con los roles de servidor.

Pasos.

  1. Preparar el VHD
  2. Acceder a la cuenta de Azure
  3. Crear un Storage Account y un Container
  4. Obtener el Storage Account
  5. Identificar la ubicación local del VHD y la ubicación donde lo alojaremos en Azure.

1. Preparar el VHD

Antes de migrar el VHD a Azure, tiene que generalizarse mediante el uso de la herramienta Sysprep. Esto prepara el VHD para ser utilizado como una imagen. (Actualmente estamos utilizando el KEMP LoadMaster, por lo que podemos omitir este paso).

Desde la máquina virtual donde se instaló el sistema operativo:

Iniciar sesión.

Abrir una ventana del símbolo del sistema como administrador. Cambiar el directorio a %windir%\system32\sysprep y ejecutar sysprep.exe.

sysprep_commandprompt

A continuación, se mostrará la ventana del System Preparation Tool:

sysprepgeneral

Seleccionar Enter System Out-of-Box (OOBE) y marca la opción de Generalize.

En Shutdown Options , selecciona Shutdown, Clic en OK.

2. Acceder a la cuenta de Azure.

Iniciar sesión en el portal clásico – manage.windowsazure.com

Abrimos Powershell ISE como administrador y añadimos las primeras variables de nuestro script.

#**********************
# Variables
#*********************
$Params = @{
 StorageAccountName = "vmdepottestkemp" #set a name for your storage account name
 Location = "East Us"
 }
$Subscription = "[Your Subscription]"
$SubscriptionId = "[Your SubscriptioId]"
$ContainerName = "[your container name with no spaces and lowercase]"
$LocalVHD = "C:\Users\....your location to your VHD"
$AzureVHD = "https://yourstorageaccountname.blob.core.windows.net/vhds/yourimagename.vhd"
$DiskName = '[your disk name]'
$LabelName = '[your label name]'
$VMImageName = "VirtualMachine Image Name"

Preparamos el acceso a la suscripción asociada y obtenemos las posibles suscripciones asociadas y definimos la suscripción por default: :

# *************************************
# Prepare the access to your subscription
#**************************************
#Login to Azure Subscription
Add-AzureAccount
# List Available Windows Azure subscriptions
Get-AzureSubscription | Format-Table -Property SubscriptionName
#Set default Windows Azure subscription 
Select-AzureRmSubscription -SubscriptionId $SubscriptionId
Select-AzureSubscription -SubscriptionId $SubscriptionId -Default

3. Creamos el storage account y lo definimos como default para alojar nuestro VHD, definimos una condición en caso de que el nombre del storage no esté disponible:

# Create a new storage account.
New-AzureStorageAccount –StorageAccountName $StorageAccountName -Location $Location
if (Test-AzureName -Storage -Name $StorageAccountName) {
 "Storage account name '$StorageAccountName' is already taken, try another one"
} else {
 New-AzureStorageAccount @Params
}
# Set a default storage account.
Set-AzureSubscription -CurrentStorageAccountName $StorageAccountName -SubscriptionName $Subscription

4. Definimos un Container  donde alojaremos nuestro VHD, y obtenemos el Storage Account:

# Create a new container.
New-AzureStorageContainer -Name $ContainerName -Permission Off
# Get default Windows Azure Storage Account.
Get-AzureStorageAccount | Format-Table -Property Label

5. Identificar la ubicación local del VHD y la ubicación donde lo alojaremos en Azure.

# Identify where the VHD is coming from and where it's going.
Add-AzureVhd -LocalFilePath $LocalVHD -Destination $AzureVHD

Podemos crear la imagen para la instancia de la Máquina Virtual en Azure ó podemos asociar el VHD a “Mis Discos” en la sección de la galería:

#Add the VHD to the “My Disk” section of the Gallery
# Register as an OS disk 
Add-AzureDisk -DiskName $DiskName -MediaLocation $AzureVHD -Label $LabelName -OS Windows
#If you want to create the image
Add-AzureVMImage -ImageName $VMImageName -MediaLocation $AzureVHD -OS Windows

Puedes descargar el script completo en: https://github.com/daveRendon/Azure/blob/master/migrate-vhd-to-azure-template.ps1

Dave Rendón Microsoft Azure MVP, embracing and fostering tech intensity to benefit society and thrive in a digital world.

One Reply to “Migrar un VHD a Azure con Powershell”

Leave a Reply

Your email address will not be published. Required fields are marked *