Partilhar via


Tutorial: Criar imagens de VM do Windows com o Azure PowerShell

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

As imagens podem ser usadas para inicializar implantações e garantir a consistência em várias VMs. Neste tutorial, você cria sua própria imagem especializada de uma máquina virtual do Azure usando o PowerShell e a armazena em uma Galeria de Computação do Azure (anteriormente conhecida como Galeria de Imagens Compartilhadas). Sabe 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

As etapas abaixo detalham como usar uma VM existente e transformá-la em uma imagem personalizada reutilizável que você pode usar para criar novas VMs.

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

Descrição geral

uma Galeria de Computação do Azure simplifica o compartilhamento de imagens personalizadas em toda a 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 que você compartilhe suas imagens de VM personalizadas com outras pessoas. Escolha as imagens que pretende partilhar, em que regiões pretende disponibilizá-las e com quem pretende partilhá-las.

O recurso Galeria de Computação do Azure tem vários tipos de recursos:

Recurso Description
Fonte da imagem Este é um recurso que pode ser usado para criar uma versão de imagem em uma galeria. Uma fonte de imagem pode ser uma VM do Azure existente que é generalizada ou especializada, uma imagem gerenciada, um instantâneo ou uma versão de imagem em outra galeria.
Galeria Como o Azure Marketplace, uma galeria é um repositório para gerenciar e compartilhar imagens e aplicativos VM, mas você controla quem tem acesso.
Definição de imagem As definições de imagem são criadas dentro de uma galeria e carregam informações sobre a imagem e os requisitos para usá-la internamente. Isso 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 você usa para criar uma VM ao usar uma galeria. Você pode ter várias versões de uma imagem conforme necessário para seu ambiente. Como uma imagem gerenciada, quando você usa uma versão de imagem para criar uma VM, a versão da imagem é usada para criar novos discos para a VM. As versões de imagem podem ser usadas 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 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.

Obter a 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 Get-AzVM novamente para obter o objeto VM e armazená-lo em uma variável para usar mais tarde. Este exemplo obtém uma VM chamada sourceVM do grupo de recursos myResourceGroup e a atribui à 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 a seguir, um grupo de recursos chamado myGalleryRG é criado na região EastUS :

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

Uma galeria é 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 usando New-AzGallery. O exemplo a seguir cria uma galeria chamada 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. 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 '2030-12-01'

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

Criar uma VM

Depois de ter uma imagem especializada, você pode criar uma ou mais novas VMs. Usando o cmdlet New-AzVM . Para usar a imagem, use Set-AzVMSourceImage e defina o -Id ID de definição de imagem ($galleryImage.Id neste caso) para sempre usar a versão mais recente da imagem.

Substitua 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. 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, alinne_montes@contoso.com neste exemplo, 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 VM
Remove-AzResourceGroup -Name myResoureceGroup

Azure Image Builder

O Azure também oferece um serviço, baseado no Packer, Azure VM Image Builder. Basta descrever suas personalizações em um modelo e ele lidará com a criação da imagem.

Próximos passos

Neste tutorial, você 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 aprender sobre Conjuntos de Escala de Máquina Virtual.