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

Создавая масштабируемый набор, вы указываете образ для использования при развертывании экземпляров виртуальных машин. Чтобы сократить количество задач после развертывания экземпляров виртуальных машин, можно использовать пользовательский образ виртуальной машины. Этот образ содержит все необходимые установки или конфигурации приложения. Все экземпляры виртуальных машин, созданные в масштабируемом наборе, используют пользовательский образ виртуальной машины и готовы обслуживать трафик приложения. Из этого руководства вы узнаете, как выполнить следующие задачи:

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

Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем приступить к работе.

Запуск Azure Cloud Shell

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

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

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

Сначала создайте группу ресурсов, выполнив командлет New-AzResourceGroup, а затем создайте виртуальную машину с помощью командлета New-AzVM. Позже эта виртуальная машина будет использована в качестве источника для образа. В следующем примере создается виртуальная машина с именем myVM в группе ресурсов myResourceGroup.

New-AzResourceGroup -Name 'myResourceGroup' -Location 'EastUS'

New-AzVm `
   -ResourceGroupName 'myResourceGroup' `
   -Name 'myVM' `
   -Location 'East US' `
   -VirtualNetworkName 'myVnet' `
   -SubnetName 'mySubnet' `
   -SecurityGroupName 'myNetworkSecurityGroup' `
   -PublicIpAddressName 'myPublicIpAddress' `
   -OpenPorts 80,3389

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

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

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

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

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

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

$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 '2023-12-01'

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

Создание масштабируемого набора на основе образа

Теперь создайте масштабируемый набор с помощью командлета New-AzVmss, который использует параметр -ImageName для определения пользовательского образа виртуальной машины, созданного на предыдущем шаге. Чтобы распределить трафик между отдельными экземплярами виртуальных машин, создается еще и подсистема балансировки нагрузки. Подсистема балансировки нагрузки определяет правила передачи трафика на TCP-порт 80, а также разрешает подключение удаленного рабочего стола трафик через TCP-порт 3389 и удаленное взаимодействие PowerShell через TCP-порт 5985. При появлении запроса введите учетные данные администратора для экземпляров виртуальных машин в масштабируемом наборе:

Важно!

Начиная с ноября 2023 года масштабируемые наборы виртуальных машин, созданные с помощью PowerShell и Azure CLI, по умолчанию будут использоваться в режиме гибкой оркестрации, если режим оркестрации не указан. Дополнительные сведения об этом изменении и о действиях, которые необходимо предпринять, см. в руководстве по критическим изменениям для клиентов VmSS PowerShell/CLI — Microsoft Community Hub

# Define variables for the scale set
$resourceGroupName = "myScaleSet"
$scaleSetName = "myScaleSet"
$location = "East US"

# Create a resource group
New-AzResourceGroup -ResourceGroupName $resourceGroupName -Location $location

# Create a configuration 
$vmssConfig = New-AzVmssConfig `
   -Location $location `
   -OrchestrationMode Flexible `
   -SkuCapacity 2 `
   -SkuName "Standard_D2s_v3"

# Reference the image version
Set-AzVmssStorageProfile $vmssConfig `
  -OsDiskCreateOption "FromImage" `
  -ImageReferenceId $galleryImage.Id

# Create the scale set 
New-AzVmss `
  -ResourceGroupName $resourceGroupName `
  -Name $scaleSetName `
  -VirtualMachineScaleSet $vmssConfig

Создание и настройка всех ресурсов и виртуальных машин масштабируемого набора занимает несколько минут.

Мы рекомендуем предоставлять общий доступ на уровне коллекции образов. Используйте адрес электронной почты и командлет 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 scale set resource group
Remove-AzResourceGroup -Name myResoureceGroup

Следующие шаги

Из этого руководства вы узнали, как создавать и использовать пользовательский образ виртуальной машины для масштабируемых наборов с помощью Azure PowerShell, в частности, как выполнять такие задачи:

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

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