Tutorial: Criar e usar uma imagem personalizada para conjuntos de dimensionamento de máquina virtual com o Azure PowerShell

Quando cria um conjunto de dimensionamento, tem de especificar uma imagem a ser utilizada quando as instâncias de VM são implementadas. Para reduzir o número de tarefas após as instâncias de VM serem implementadas, pode utilizar uma imagem de VM personalizada. Esta imagem de VM personalizada inclui instalações ou configurações de aplicações obrigatórias. Quaisquer instâncias de VM criadas no conjunto de dimensionamento utilizam a imagem de VM personalizada e estão prontas para apresentar o seu tráfego de aplicações. Neste tutorial, ficará a saber como:

  • Criar uma Galeria de Computação do Azure
  • Criar uma definição de imagem
  • Criar uma versão de imagem
  • Criar um conjunto de escala a partir de uma imagem
  • Partilhar uma galeria de imagens

Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.

Iniciar o Azure Cloud Shell

O Azure Cloud Shell é um shell interativo gratuito que pode utilizar para executar os passos neste artigo. Tem as ferramentas comuns do Azure pré-instaladas e configuradas para utilização com a sua conta.

Para abrir o Cloud Shell, basta selecionar Experimentar no canto superior direito de um bloco de código. Também pode iniciar o Cloud Shell num separador do browser separado ao aceder a https://shell.azure.com/powershell. Selecione Copiar para copiar os blocos de código, cole-o no Cloud Shell e prima Enter para executá-lo.

Criar e configurar uma VM de origem

Primeiro, crie um grupo de recursos com New-AzResourceGroup e, em seguida, crie uma VM com New-AzVM. Essa VM é então usada como a fonte para a imagem. O exemplo seguinte cria uma VM com o nome myVM no grupo de recursos com o nome 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

Armazenar a variável VM

Você pode ver uma lista de VMs que estão disponíveis em um grupo de recursos usando Get-AzVM. Depois de saber o nome da VM e qual grupo de recursos, você pode usar novamente para obter o objeto VM e armazená-lo em uma variável para usar Get-AzVM mais tarde. Este exemplo obtém uma VM chamada myVM do grupo de recursos "myResourceGroup" e a atribui à variável $vm.

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

Uma galeria de imagens é o principal recurso usado para habilitar o compartilhamento de imagens. Os caracteres permitidos para o nome da galeria são letras maiúsculas ou minúsculas, dígitos, pontos e pontos. O nome da galeria não pode conter traços. Os nomes das galerias devem ser exclusivos na sua assinatura.

Crie uma galeria de imagens usando New-AzGallery. O exemplo a seguir cria uma galeria chamada myGallery no grupo de recursos 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'	

Criar uma definição de imagem

As definições de imagem criam um agrupamento lógico para imagens. Eles são usados para gerenciar informações sobre as versões de imagem que são criadas dentro deles. Os nomes de definição de imagem podem ser compostos por letras maiúsculas ou minúsculas, dígitos, pontos, traços e pontos. Para obter mais informações sobre os valores que você pode especificar para uma definição de imagem, consulte Definições de imagem.

Crie a definição de imagem usando New-AzGalleryImageDefinition. Neste exemplo, a imagem da galeria é chamada myGalleryImage e é criada para uma imagem especializada.

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

Criar uma versão de imagem

Crie uma versão de imagem de uma VM usando New-AzGalleryImageVersion.

Os caracteres permitidos para a versão da imagem são números e pontos. Os números devem estar dentro do intervalo de um inteiro de 32 bits. Formato: MajorVersion.Versão Menor.Adesivo.

Neste exemplo, a versão da imagem é 1.0.0 e é replicada para datacenters do Leste dos EUA e do Centro-Sul dos EUA. Ao escolher regiões de destino para replicação, você precisa incluir a região de origem como destino para replicação.

Para criar uma versão de imagem a partir da VM, use $vm.Id.ToString() para o -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 '2023-12-01'

Pode levar algum tempo para replicar a imagem para todas as regiões de destino.

Criar um conjunto de escalas a partir da imagem

Agora, crie um conjunto de escala com New-AzVmss que usa o -ImageName parâmetro para definir a imagem de VM personalizada criada na etapa anterior. Para distribuir o tráfego pelas instâncias de VM individuais, é também criado um balanceador de carga. O balanceador de carga inclui regras para distribuir o tráfego na porta TCP 80, bem como permitir o tráfego de ambiente de trabalho remoto na porta TCP 3389 e a comunicação remota do PowerShell na porta TCP 5985. Quando solicitado, forneça as suas próprias credenciais administrativas pretendidas para as instâncias de VM no conjunto de dimensionamento:

Importante

A partir de novembro de 2023, os conjuntos de dimensionamento de VM criados usando o PowerShell e a CLI do Azure assumirão como padrão o Modo de Orquestração Flexível se nenhum modo de orquestração for especificado. Para obter mais informações sobre essa alteração e quais ações você deve tomar, vá para Breaking Change for VMSS PowerShell/CLI Customers - 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

A criação e configuração de todas as VMs e recursos do conjunto de dimensionamento demora alguns minutos.

Recomendamos que partilhe o acesso ao nível da galeria de imagens. Use um endereço de email e o cmdlet Get-AzADUser para obter a ID do objeto para o usuário e, em seguida, use New-AzRoleAssignment para dar acesso à galeria. Substitua o e-mail de exemplo, neste exemplo, alinne_montes@contoso.com por suas próprias informações.

# 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

Clean up resources (Limpar recursos)

Quando não for mais necessário, você poderá usar o cmdlet Remove-AzResourceGroup para remover o grupo de recursos e todos os recursos relacionados:

# Delete the gallery 
Remove-AzResourceGroup -Name myGalleryRG

# Delete the scale set resource group
Remove-AzResourceGroup -Name myResoureceGroup

Próximos passos

Neste tutorial, aprendeu a criar e utilizar uma imagem de VM personalizada nos seus conjuntos de dimensionamento com o Azure PowerShell:

  • Criar uma Galeria de Computação do Azure
  • Criar uma definição de imagem
  • Criar uma versão de imagem
  • Criar um conjunto de escala a partir de uma imagem
  • Partilhar uma galeria de imagens

Prossiga para o próximo tutorial para saber como implementar aplicações no seu conjunto de dimensionamento.