Поделиться через


Руководство по созданию образов виртуальных машин Windows с помощью Azure PowerShell

Область применения: ✔️ Виртуальные машины Windows ✔️ Гибкие масштабируемые наборы

Образы можно использовать для начальной загрузки развертываний и обеспечения согласованности между несколькими виртуальными машинами. В этом руководстве вы создадите собственный специализированный образ виртуальной машины Azure с помощью PowerShell и сохраните его в коллекции вычислений Azure (прежнее название — общая коллекция образов). Вы узнаете, как:

  • Создание галереи вычислительных ресурсов Azure
  • Создание определения образа
  • Создание версии образа
  • Создание виртуальной машины из образа
  • Поделиться галереей

Перед тем как начать

Ниже описано, как взять существующую виртуальную машину и превратить ее в повторно используемый кастомный образ, который можно использовать для создания новых виртуальных машин.

Для выполнения примера в этом руководстве требуется виртуальная машина. При необходимости вы увидите краткое руководство по PowerShell по созданию виртуальной машины, используемой для работы с этим руководством. При работе с учебником заменяйте имена ресурсов по мере необходимости.

Обзор

Галерея вычислений Azure упрощает совместное использование пользовательских образов в вашей организации. Пользовательские изображения похожи на изображения из Marketplace, но вы создаете их самостоятельно. Пользовательские образы можно использовать для начальной загрузки конфигураций, таких как предварительная загрузка приложений, конфигурации приложений и других конфигураций ОС.

Галерея вычислений Azure позволяет делиться пользовательскими образами виртуальных машин с другими пользователями. Выберите изображения, которые вы хотите поделиться, регионы, в которых они будут доступны, и с кем вы хотите ими поделиться.

Функция коллекции вычислений Azure имеет несколько типов ресурсов:

Ресурс Описание
Источник образа Это ресурс, который можно использовать для создания версии изображения в галерее. Источником образа может быть существующая виртуальная машина Azure (универсальная или специализированная), управляемый образ, моментальный снимок или версия образа в другой коллекции.
Галерея Как и Azure Marketplace, коллекция — это репозиторий для администрирования и совместного использования образов и приложений VM, но здесь, в отличие от Azure Marketplace, доступ к коллекции контролируете вы.
Определение образа Определения изображений создаются в галерее и содержат информацию об изображении и требования для его внутреннего использования. Эти сведения включают в себя: определение, относится ли этот образ к Windows или к Linux, заметки о выпуске, а также минимальные и максимальные требования к памяти. Это определение типа образа.
Версия образа Версия образа — это то, что вы используете для создания виртуальной машины при работе с галереей. В вашей среде можно использовать несколько версий образа в зависимости от потребностей. Так же как и управляемый образ при использовании версии образа для создания виртуальной машины, версия образа используется для создания новых дисков для виртуальной машины. Версии изображений можно использовать несколько раз.

Запуск Azure Cloud Shell

Azure Cloud Shell — это бесплатная интерактивная оболочка, с помощью которой можно выполнять действия, описанные в этой статье. Он содержит стандартные средства Azure, предварительно установленные и настроенные для использования с вашей учетной записью.

Чтобы открыть Cloud Shell, просто выберите Попробовать в правом верхнем углу блока кода. Cloud Shell можно также запустить в отдельной вкладке браузера, перейдя на страницу https://shell.azure.com/powershell. Нажмите кнопку Копировать, чтобы скопировать блоки кода. Вставьте код в Cloud Shell и нажмите клавишу "ВВОД", чтобы выполнить его.

Получите виртуальную машину

Вы можете увидеть список виртуальных машин, доступных в группе ресурсов, с помощью Get-AzVM. После того как вы знаете имя виртуальной машины и какую группу ресурсов, вы можете снова использовать Get-AzVM , чтобы получить объект виртуальной машины и сохранить его в переменной для последующего использования. Этот пример получает виртуальную машину с именем sourceVM из группы ресурсов myResourceGroup и назначает ее переменной $sourceVM.

$sourceVM = Get-AzVM `
   -Name sourceVM `
   -ResourceGroupName myResourceGroup

Создание группы ресурсов

Создайте группу ресурсов с помощью команды New-AzResourceGroup.

Группа ресурсов Azure является логическим контейнером, в котором происходит развертывание ресурсов Azure и управление ими. В следующем примере группа ресурсов с именем myGalleryRG создается в регионе EastUS :

$resourceGroup = New-AzResourceGroup `
   -Name 'myGalleryRG' `
   -Location 'EastUS'

Галерея является основным ресурсом, который используется для обмена изображениями. Допустимые символы для названия галереи — прописные или строчные буквы, цифры и точки. Название галереи не должно содержать дефисы. Названия галерей должны быть уникальными в рамках вашей подписки.

Создайте коллекцию с помощью New-AzGallery. В следующем примере создается коллекция myGallery в группе ресурсов myGalleryRG.

$gallery = New-AzGallery `
   -GalleryName 'myGallery' `
   -ResourceGroupName $resourceGroup.ResourceGroupName `
   -Location $resourceGroup.Location `
   -Description 'Azure Compute Gallery for my organization'	

Создание определения образа

Образы можно объединять в логические группы с помощью определений образов. Они используются для управления сведениями о версиях образов, созданных в них. В имени определения образа можно использовать прописные и строчные буквы, цифры, точки и дефисы. Дополнительные сведения о значениях, которые можно указать для определения образа, см. в разделе Определения образов.

Создайте определение образа с помощью командлета PowerShell New-AzGalleryImageDefinition. В этом примере изображение галереи называется myGalleryImage и создается для специализированного изображения.

$galleryImage = New-AzGalleryImageDefinition `
   -GalleryName $gallery.Name `
   -ResourceGroupName $resourceGroup.ResourceGroupName `
   -Location $gallery.Location `
   -Name 'myImageDefinition' `
   -OsState specialized `
   -OsType Windows `
   -Publisher 'myPublisher' `
   -Offer 'myOffer' `
   -Sku 'mySKU'

Создайте версию изображения

Создайте версию образа из виртуальной машины с помощью New-AzGalleryImageVersion.

Допустимыми знаками для имени версии образа являются цифры и точки. Числа должны быть в диапазоне 32-битного целого числа. Формат: Мажорная версия.Минорная версия.Патч.

В этом примере версия образа — 1.0.0 , и она реплицируется как в центрах обработки данных восточной части США , так и в южной части США . При выборе целевых регионов для репликации необходимо включить исходный регион в качестве целевого объекта для репликации.

Чтобы создать вариант образа из виртуальной машины, используйте $vm.Id.ToString() для -Source.

   $region1 = @{Name='South Central US';ReplicaCount=1}
   $region2 = @{Name='East US';ReplicaCount=2}
   $targetRegions = @($region1,$region2)

New-AzGalleryImageVersion `
   -GalleryImageDefinitionName $galleryImage.Name`
   -GalleryImageVersionName '1.0.0' `
   -GalleryName $gallery.Name `
   -ResourceGroupName $resourceGroup.ResourceGroupName `
   -Location $resourceGroup.Location `
   -TargetRegion $targetRegions  `
   -Source $sourceVM.Id.ToString() `
   -PublishingProfileEndOfLifeDate '2030-12-01'

Репликация образа во все целевые регионы может занять некоторое время.

Создание виртуальной машины

После создания специализированного образа можно создать одну или несколько новых виртуальных машин. Использование командлета New-AzVM . Чтобы использовать изображение, используйте Set-AzVMSourceImage и задайте -Id идентификатор определения изображения ($galleryImage.Id в данном случае), чтобы всегда использовать последнюю версию образа.

Замените имена ресурсов по мере необходимости в этом примере.

# Create some variables for the new VM.
$resourceGroup = "myResourceGroup"
$location = "South Central US"
$vmName = "mySpecializedVM"

# Create a resource group
New-AzResourceGroup -Name $resourceGroup -Location $location

# Create the network resources.
$subnetConfig = New-AzVirtualNetworkSubnetConfig -Name mySubnet -AddressPrefix 192.168.1.0/24
$vnet = New-AzVirtualNetwork -ResourceGroupName $resourceGroup -Location $location `
  -Name MYvNET -AddressPrefix 192.168.0.0/16 -Subnet $subnetConfig
$pip = New-AzPublicIpAddress -ResourceGroupName $resourceGroup -Location $location `
  -Name "mypublicdns$(Get-Random)" -AllocationMethod Static -IdleTimeoutInMinutes 4
$nsgRuleRDP = New-AzNetworkSecurityRuleConfig -Name myNetworkSecurityGroupRuleRDP  -Protocol Tcp `
  -Direction Inbound -Priority 1000 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * `
  -DestinationPortRange 3389 -Access Deny
$nsg = New-AzNetworkSecurityGroup -ResourceGroupName $resourceGroup -Location $location `
  -Name myNetworkSecurityGroup -SecurityRules $nsgRuleRDP
$nic = New-AzNetworkInterface -Name $vmName -ResourceGroupName $resourceGroup -Location $location `
  -SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $pip.Id -NetworkSecurityGroupId $nsg.Id

# Create a virtual machine configuration using $imageVersion.Id to specify the image version.
$vmConfig = New-AzVMConfig -VMName $vmName -VMSize Standard_D1_v2 | `
Set-AzVMSourceImage -Id $galleryImage.Id | `
Add-AzVMNetworkInterface -Id $nic.Id

# Create a virtual machine
New-AzVM -ResourceGroupName $resourceGroup -Location $location -VM $vmConfig

Рекомендуется предоставить общий доступ на уровне коллекции. Используйте адрес электронной почты и командлет Get-AzADUser, чтобы получить идентификатор объекта для пользователя, а затем используйте командлет New-AzRoleAssignment, чтобы предоставить этому пользователю доступ к коллекции. Замените пример адреса электронной почты [email protected] на своей информацией.

# Get the object ID for the user
$user = Get-AzADUser -StartsWith [email protected]
# Grant access to the user for our gallery
New-AzRoleAssignment `
   -ObjectId $user.Id `
   -RoleDefinitionName Reader `
   -ResourceName $gallery.Name `
   -ResourceType Microsoft.Compute/galleries `
   -ResourceGroupName $resourceGroup.ResourceGroupName

Очистка ресурсов

При отсутствии необходимости можно использовать командлет Remove-AzResourceGroup для удаления группы ресурсов и всех связанных ресурсов:

# Delete the gallery 
Remove-AzResourceGroup -Name myGalleryRG

# Delete the VM
Remove-AzResourceGroup -Name myResoureceGroup

Конструктор образов Azure

Azure также предлагает службу на основе Packer — Конструктор образов виртуальных машин Azure. Просто опишите свои кастомизации в шаблоне, и он выполнит создание изображения.

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

В этом руководстве вы создали специализированный образ виртуальной машины. Вы узнали, как:

  • Создание галереи вычислительных ресурсов Azure
  • Создание определения образа
  • Создайте версию изображения
  • Создание виртуальной машины из образа
  • Поделиться галереей

Перейдите к следующему руководству, чтобы узнать о наборах масштабируемых виртуальных машин.