Criar uma imagem personalizada a partir de um arquivo VHD com o PowerShell

No Azure DevTest Labs, você pode usar imagens personalizadas para:

  • Crie uma VM a partir de um arquivo VHD que tenha todo o software que você precisa pré-instalado.
  • Crie VMs rapidamente, porque você não precisa instalar todo o software necessário nas máquinas de destino.
  • Clone uma VM criando uma imagem personalizada a partir de uma VM e, em seguida, criando VMs com base nessa imagem.

Pré-requisitos

Para trabalhar neste tutorial, você precisa de um arquivo de disco rígido virtual (VHD) carregado na conta de Armazenamento do Azure para o laboratório onde deseja criar a imagem personalizada. Para carregar um ficheiro VHD para a sua conta de armazenamento, siga as instruções num destes artigos:

Nota

Recomendamos que utilize o módulo Azure Az do PowerShell para interagir com o Azure. Para começar, consulte Instalar o Azure PowerShell. Para saber como migrar para o módulo do Az PowerShell, veja Migrar o Azure PowerShell do AzureRM para o Az.

Etapas do PowerShell

As etapas a seguir orientam você na criação de uma imagem personalizada a partir de um arquivo VHD usando o Azure PowerShell:

  1. Em um prompt de comando do PowerShell, entre em sua conta do Azure com o cmdlet Connect-AzAccount :

    Connect-AzAccount
    
  2. Selecione sua assinatura do Azure com o cmdlet Select-AzSubscription . Substitua <o ID da> assinatura pelo GUID do ID da assinatura.

    $subscriptionId = '<subscription ID>'
    Select-AzSubscription -SubscriptionId $subscriptionId
    
  3. Obtenha o objeto de laboratório chamando o cmdlet Get-AzResource . Substitua o nome> do grupo de recursos de laboratório e <os espaços reservados de nome> de <laboratório por seu próprio grupo de recursos e nomes de laboratório.

    $labRg = '<lab resource group name>'
    $labName = '<lab name>'
    $lab = Get-AzResource -ResourceId ('/subscriptions/' + $subscriptionId + '/resourceGroups/' + $labRg + '/providers/Microsoft.DevTestLab/labs/' + $labName)
    
  4. Substitua o espaço reservado para a variável $vhdUri pelo URI do arquivo VHD carregado. Você pode obter o URI do arquivo VHD de sua página de blob na conta de armazenamento do laboratório no portal do Azure. Um exemplo de URI VHD é: https://acontosolab1234.blob.core.windows.net/uploads/myvhd.vhd.

    $vhdUri = '<VHD URI>'
    
  5. Crie a imagem personalizada usando o cmdlet New-AzResourceGroupDeployment . Substitua o nome> da imagem personalizada e <os <espaços reservados para descrição> da imagem personalizada pelo nome e descrição desejados.

    $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 do PowerShell

A combinação das etapas anteriores produz o seguinte script do PowerShell que cria uma imagem personalizada a partir de um arquivo VHD. Para usar o script, substitua os seguintes espaços reservados por seus próprios valores:

  • <ID da subscrição>
  • <Nome do grupo de recursos de laboratório>
  • <nome do laboratório>
  • <VHD URI>
  • <nome da imagem personalizada>
  • <Descrição da imagem 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

Próximos passos