Creación de una imagen personalizada a partir de un archivo VHD con PowerShell

En Azure DevTest Labs, puede usar imágenes personalizadas para:

  • Crear una máquina virtual a partir de un archivo VHD que tenga todo el software que necesita preinstalado.
  • Crear máquinas virtuales rápidamente, ya que no tiene que instalar todo el software necesario en las máquinas de destino.
  • Clonar una máquina virtual mediante la creación de una imagen personalizada a partir de una máquina virtual y, a continuación, crear máquinas virtuales basadas en esa imagen.

Prerrequisitos

Para trabajar con este tutorial, necesita un archivo de disco duro virtual (VHD) cargado en la cuenta de Azure Storage para el laboratorio donde desea crear la imagen personalizada. Para cargar un archivo VHD en la cuenta de almacenamiento, siga las instrucciones de uno de estos artículos:

Nota:

Se recomienda usar el módulo Azure Az de PowerShell para interactuar con Azure. Consulte Instalación de Azure PowerShell para empezar. Para más información sobre cómo migrar al módulo Az de PowerShell, consulte Migración de Azure PowerShell de AzureRM a Az.

pasos de PowerShell

Los siguientes pasos le guían en la creación de una imagen personalizada a partir de un archivo VHD mediante Azure PowerShell:

  1. En el símbolo del sistema de PowerShell, inicie sesión en su cuenta de Azure con el cmdlet Connect-AzAccount:

    Connect-AzAccount
    
  2. Seleccione la suscripción de Azure con el cmdlet Select-AzSubscription. Reemplace <subscription ID> por su GUID del identificador de la suscripción.

    $subscriptionId = '<subscription ID>'
    Select-AzSubscription -SubscriptionId $subscriptionId
    
  3. Obtenga el objeto de laboratorio mediante la llamada al cmdlet Get-AzResource. Reemplace el <nombre del grupo de recursos de laboratorio> y los marcadores de posición del <nombre del laboratorio> por sus propios nombres de grupo de recursos y de laboratorio.

    $labRg = '<lab resource group name>'
    $labName = '<lab name>'
    $lab = Get-AzResource -ResourceId ('/subscriptions/' + $subscriptionId + '/resourceGroups/' + $labRg + '/providers/Microsoft.DevTestLab/labs/' + $labName)
    
  4. Reemplace el marcador de posición de la variable $vhdUri por el identificador URI del archivo VHD cargado. Puede obtener el URI del archivo VHD desde su página de blobs en la cuenta de almacenamiento del laboratorio en Azure Portal. Un URI de VHD de ejemplo es: https://acontosolab1234.blob.core.windows.net/uploads/myvhd.vhd.

    $vhdUri = '<VHD URI>'
    
  5. Cree la imagen personalizada mediante el cmdlet New-AzResourceGroupDeployment. Reemplace el <nombre de la imagen personalizada> y los marcadores de posición de <descripción de la imagen personalizada> por el nombre y la descripción que desee.

    $customImageName = '<custom image name>'
    $customImageDescription = '<custom image description>'
    
    $parameters = @{existingLabName="$($lab.Name)"; existingVhdUri=$vhdUri; imageOsType='windows'; isVhdSysPrepped=$false; imageName=$customImageName; imageDescription=$customImageDescription}
    
    New-AzResourceGroupDeployment -ResourceGroupName $lab.ResourceGroupName -Name CreateCustomImage -TemplateUri 'https://raw.githubusercontent.com/Azure/azure-devtestlab/master/samples/DevTestLabs/QuickStartTemplates/201-dtl-create-customimage-from-vhd/azuredeploy.json' -TemplateParameterObject $parameters
    

Script completo de PowerShell

La combinación de los pasos anteriores genera el siguiente script de PowerShell que crea una imagen personalizada a partir de un archivo VHD. Para usar el script, reemplace los siguientes marcadores de posición por sus propios valores:

  • <Id. de suscripción>
  • <nombre del grupo de recursos de laboratorio>
  • <nombre del laboratorio>
  • <URI de VHD>
  • <Nombre de la imagen personalizada>
  • <Descripción de la imagen personalizada>
# Log in to your Azure account.
Connect-AzAccount

# Select the desired Azure subscription.
$subscriptionId = '<subscription ID>'
Select-AzSubscription -SubscriptionId $subscriptionId

# Get the lab object.
$labRg = '<lab resource group name>'
$labName = '<lab name>'
$lab = Get-AzResource -ResourceId ('/subscriptions/' + $subscriptionId + '/resourceGroups/' + $labRg + '/providers/Microsoft.DevTestLab/labs/' + $labName)

# Set the URI of the VHD file.
$vhdUri = '<VHD URI>'

# Set the custom image name and description values.
$customImageName = '<custom image name>'
$customImageDescription = '<custom image description>'

# Set up the parameters object.
$parameters = @{existingLabName="$($lab.Name)"; existingVhdUri=$vhdUri; imageOsType='windows'; isVhdSysPrepped=$false; imageName=$customImageName; imageDescription=$customImageDescription}

# Create the custom image.
New-AzResourceGroupDeployment -ResourceGroupName $lab.ResourceGroupName -Name CreateCustomImage -TemplateUri 'https://raw.githubusercontent.com/Azure/azure-devtestlab/master/samples/DevTestLabs/QuickStartTemplates/201-dtl-create-customimage-from-vhd/azuredeploy.json' -TemplateParameterObject $parameters

Pasos siguientes