Tutorial: Criar imagens de VM do Windows com Azure PowerShell

Aplica-se a: ✔️ Conjuntos de dimensionamento flexíveis de VMs ✔️ do Windows

As imagens podem ser utilizadas para iniciar implementações e garantir a consistência em várias VMs. Neste tutorial, vai criar a sua própria imagem especializada de uma máquina virtual do Azure com o PowerShell e armazená-la numa Galeria de Computação do Azure (anteriormente conhecida como Shared Image Gallery). Saiba como:

  • Criar uma Galeria de Computação do Azure
  • Criar uma definição de imagem
  • Criar uma versão de imagem
  • Criar uma VM a partir de uma imagem
  • Partilhar uma galeria

Antes de começar

Os passos abaixo detalham como utilizar uma VM existente e transformá-la numa imagem personalizada reutilizável que pode utilizar para criar novas VMs.

Para concluir o exemplo neste tutorial, tem de ter uma máquina virtual existente. Se necessário, pode ver o início rápido do PowerShell para criar uma VM para utilizar neste tutorial. Ao trabalhar no tutorial, substitua os nomes dos recursos sempre que necessário.

Descrição Geral

uma Galeria de Computação do Azure simplifica a partilha de imagens personalizada na sua organização. As imagens personalizadas são como imagens do marketplace, mas são criadas por si. As imagens personalizadas podem ser utilizadas para configurações do programa de arranque do sistema, como o pré-carregamento de aplicações, configurações de aplicação e outras configurações do SO.

A Galeria de Computação do Azure permite-lhe partilhar as suas imagens de VM personalizadas com outras pessoas. Escolha as imagens que pretende partilhar, as regiões nas quais pretende disponibilizá-las e com quem pretende partilhá-las.

A funcionalidade Galeria de Computação do Azure tem vários tipos de recursos:

Recurso Descrição
Origem da imagem Este é um recurso que pode ser utilizado para criar uma versão de imagem numa galeria. Uma origem de imagem pode ser uma VM do Azure existente generalizada ou especializada, uma imagem gerida, um instantâneo ou uma versão de imagem noutra galeria.
Galeria Tal como o Azure Marketplace, uma galeria é um repositório para gerir e partilhar imagens e aplicações de VM, mas controla quem tem acesso.
Definição de imagem As definições de imagem são criadas numa galeria e transportam informações sobre a imagem e os requisitos para utilizá-la internamente. Isto inclui se a imagem é Windows ou Linux, notas de versão e requisitos mínimos e máximos de memória. É uma definição de um tipo de imagem.
Versão da imagem Uma versão de imagem é o que utiliza para criar uma VM ao utilizar uma galeria. Pode ter várias versões de uma imagem conforme necessário para o seu ambiente. Tal como uma imagem gerida, quando utiliza uma versão de imagem para criar uma VM, a versão da imagem é utilizada para criar novos discos para a VM. As versões de imagens podem ser utilizadas várias vezes.

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 Experimente 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.

Obter a VM

Pode ver uma lista de VMs disponíveis num grupo de recursos com Get-AzVM. Assim que souber o nome da VM e que grupo de recursos, pode utilizar Get-AzVM novamente para obter o objeto da VM e armazená-lo numa variável para utilizar mais tarde. Este exemplo obtém uma VM com o nome sourceVM do grupo de recursos myResourceGroup e atribui-a à variável $sourceVM.

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

Criar um grupo de recursos

Crie um grupo de recursos com o comando New-AzResourceGroup .

Um grupo de recursos do Azure é um contentor lógico no qual os recursos do Azure são implementados e geridos. No exemplo seguinte, é criado um grupo de recursos com o nome myGalleryRG na região EUA Leste :

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

Uma galeria é o recurso principal utilizado para ativar a partilha de imagens. Os carateres 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 travessões. Os nomes das galerias têm de ser exclusivos na sua subscrição.

Crie uma galeria com New-AzGallery. O exemplo seguinte cria uma galeria com o nome myGallery no grupo de recursos myGalleryRG .

$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. São utilizadas para gerir informações sobre as versões de imagem que são criadas dentro das mesmas. Os nomes das definições de imagem podem ser compostos por letras maiúsculas ou minúsculas, dígitos, pontos, travessões e pontos. Para obter mais informações sobre os valores que pode especificar para uma definição de imagem, veja Definições de imagem.

Crie a definição de imagem com New-AzGalleryImageDefinition. Neste exemplo, a imagem da galeria é denominada 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 a partir de uma VM com New-AzGalleryImageVersion.

Os carateres permitidos para a versão da imagem são números e pontos finais. Os números têm de estar dentro do intervalo de um número inteiro de 32 bits. Formato: MajorVersion. MinorVersion. Patch.

Neste exemplo, a versão da imagem é a 1.0.0 e é replicada para datacenters E.U.A. Leste e E.U.A. Centro-Sul. Ao escolher regiões de destino para replicação, tem de incluir a região de origem como um destino para a replicação.

Para criar uma versão de imagem a partir da VM, utilize $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 '2030-12-01'

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

Criar uma VM

Assim que tiver uma imagem especializada, pode criar uma ou mais VMs novas. Utilizar o cmdlet New-AzVM . Para utilizar a imagem, utilize Set-AzVMSourceImage e defina o -Id para o ID de definição de imagem ($galleryImage.Id neste caso) para utilizar sempre a versão mais recente da imagem.

Substitua os nomes de recursos conforme necessário neste exemplo.

# 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

Recomendamos que partilhe o acesso ao nível da galeria. Utilize um endereço de e-mail e o cmdlet Get-AzADUser para obter o ID de objeto do utilizador e, em seguida, utilize New-AzRoleAssignment para lhes dar acesso à galeria. Substitua o e-mail de exemplo, alinne_montes@contoso.com neste exemplo, pelas 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

Limpar os recursos

Quando já não for necessário, pode utilizar o cmdlet Remove-AzResourceGroup para remover o grupo de recursos e todos os recursos relacionados:

# Delete the gallery 
Remove-AzResourceGroup -Name myGalleryRG

# Delete the VM
Remove-AzResourceGroup -Name myResoureceGroup

Azure Image Builder

O Azure também oferece um serviço, criado com base no Packer, Azure VM Image Builder. Descreva simplesmente as suas personalizações num modelo e irá processar a criação da imagem.

Passos seguintes

Neste tutorial, criou uma imagem de VM especializada. Aprendeu a:

  • Criar uma Galeria de Computação do Azure
  • Criar uma definição de imagem
  • Criar uma versão de imagem
  • Criar uma VM a partir de uma imagem
  • Partilhar uma galeria

Avance para o próximo tutorial para saber mais sobre Conjuntos de Dimensionamento de Máquinas Virtuais.