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

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

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

  • Создание Коллекции вычислений Azure
  • Создание определения образа
  • Создание версии образа
  • Создание виртуальной машины из образа
  • Общий доступ к коллекции

Перед началом

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

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

Обзор

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

Коллекция вычислений 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'	

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

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

Создайте определение образа с помощью командлета 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, которая реплицируется в центры обработки данных в регионах Восточная часть США и Центрально-южная часть США. При выборе целевых регионов для репликации необходимо включить исходный регион в качестве целевого для репликации.

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

   $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, чтобы предоставить этому пользователю доступ к коллекции. Замените пример адреса электронной почты alinne_montes@contoso.com в этом примере своим значением адреса.

# Get the object ID for the user
$user = Get-AzADUser -StartsWith alinne_montes@contoso.com
# 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
  • Создание определения образа
  • Создание версии образа
  • Создание виртуальной машины из образа
  • Общий доступ к коллекции

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