Создание пользовательского образа из VHD-файла с помощью PowerShell

В Azure DevTest Labs можно использовать пользовательские образы в следующих целях:

  • Создавайте виртуальные машины из VHD-файла, содержащего все программное обеспечение, которое необходимо предварительно установить.
  • Создавайте виртуальные машины быстро, так как на целевых компьютерах не нужно устанавливать все необходимое программное обеспечение.
  • Клонируйте виртуальные машины путем создания пользовательского образа из виртуальной машины и последующего создания виртуальных машин на основе этого образа.

Предварительные требования

Для работы с этим руководством вам потребуется файл виртуального жесткого диска (VHD), переданный в учетную запись службы хранилища Azure для лаборатории, в котором нужно создать пользовательский образ. Чтобы отправить файл VHD в учетную запись хранения, следуйте инструкциям в одной из следующих статей:

Примечание

Для взаимодействия с Azure рекомендуется использовать модуль Azure Az PowerShell. Чтобы начать работу, см. статью Установка Azure PowerShell. Дополнительные сведения см. в статье Перенос Azure PowerShell с AzureRM на Az.

PowerShell, шаги

Чтобы создать пользовательский образ из файла VHD с помощью Azure PowerShell, сделайте следующее:

  1. В командной строке PowerShell войдите в учетную запись Azure с командлетом Connect-AzAccount:

    Connect-AzAccount
    
  2. Выберите необходимую подписку Azure с помощью командлета Select-AzSubscription. Замените <subscription ID> идентификатором GUID своей подписки.

    $subscriptionId = '<subscription ID>'
    Select-AzSubscription -SubscriptionId $subscriptionId
    
  3. Получите объект лаборатории, вызвав командлет Get-AzResource. Замените <имя группы ресурсов лаборатории> и < имя лаборатории> именем своей группы ресурсов и лаборатории.

    $labRg = '<lab resource group name>'
    $labName = '<lab name>'
    $lab = Get-AzResource -ResourceId ('/subscriptions/' + $subscriptionId + '/resourceGroups/' + $labRg + '/providers/Microsoft.DevTestLab/labs/' + $labName)
    
  4. Замените заполнитель для переменной $vhdUri на URI своего файла VHD. URI файла VHD можно получить на странице BLOB-объекта в учетной записи хранения для лаборатории на портале Azure. Пример URI VHD: https://acontosolab1234.blob.core.windows.net/uploads/myvhd.vhd.

    $vhdUri = '<VHD URI>'
    
  5. Создайте пользовательский образ, используя командлет New-AzResourceGroupDeployment. Замените заполнители <имени пользовательского образа> и <описания пользовательского образа> нужными именем и описанием.

    $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
    

Полный скрипт PowerShell

При объединении предыдущих шагов создается следующий сценарий PowerShell, который создает пользовательский образ файла VHD. Чтобы использовать скрипт, замените следующие заполнители собственными значениями:

  • <идентификатор подписки>
  • <имя группы ресурсов лаборатории>
  • <имя лаборатории>
  • <VHD URI>
  • <имя пользовательского образа>
  • <описание пользовательского образа>
# 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

Дальнейшие действия