Создание пользовательского образа из VHD-файла с помощью PowerShell
В Azure DevTest Labs можно использовать пользовательские образы в следующих целях:
- создание виртуальных машин из VHD-файла, содержащего все программное обеспечение, которое необходимо предварительно установить;
- оперативное создание виртуальных машин: на целевых компьютерах не нужно устанавливать необходимое программное обеспечение;
- клонирование виртуальных машин путем создания пользовательского образа из виртуальной машины и последующего создания виртуальных машин на основе этого образа.
Необходимые компоненты
Для работы с этим руководством вам потребуется файл виртуального жесткого диска (VHD), переданный в учетную запись службы хранилища Azure для лаборатории, в котором нужно создать пользовательский образ. Чтобы отправить файл VHD в учетную запись хранения, следуйте инструкциям в одной из следующих статей:
- Отправка файла VHD с помощью служебной программы командной строки AzCopy.
- Отправка файла VHD с помощью Обозревателя службы хранилища Microsoft Azure.
- Отправка файла VHD с помощью PowerShell.
Примечание.
Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Сведения о начале работы см. в статье "Установка Azure PowerShell". Дополнительные сведения см. в статье Перенос Azure PowerShell с AzureRM на Az.
Шаги в PowerShell
Чтобы создать пользовательский образ из файла VHD с помощью Azure PowerShell, сделайте следующее:
В командной строке PowerShell войдите в учетную запись Azure с командлетом Connect-AzAccount:
Connect-AzAccount
Выберите необходимую подписку Azure с помощью командлета Select-AzSubscription. Замените <subscription ID> идентификатором GUID своей подписки.
$subscriptionId = '<subscription ID>' Select-AzSubscription -SubscriptionId $subscriptionId
Получите объект лаборатории, вызвав командлет Get-AzResource. Замените <имя группы ресурсов лаборатории> и < имя лаборатории> именем своей группы ресурсов и лаборатории.
$labRg = '<lab resource group name>' $labName = '<lab name>' $lab = Get-AzResource -ResourceId ('/subscriptions/' + $subscriptionId + '/resourceGroups/' + $labRg + '/providers/Microsoft.DevTestLab/labs/' + $labName)
Замените заполнитель для переменной $vhdUri на URI своего файла VHD. URI файла VHD можно получить на странице BLOB-объекта в учетной записи хранения для лаборатории на портале Azure. Пример URI VHD:
https://acontosolab1234.blob.core.windows.net/uploads/myvhd.vhd
.$vhdUri = '<VHD URI>'
Создайте пользовательский образ, используя командлет 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