Tutorial: Criar uma imagem personalizada de uma VM do Azure com a CLI do Azure

Aplicável a: VMs do Linux ✔️ e conjuntos de dimensionamento Flexíveis ✔️

Imagens personalizadas são como imagens do marketplace, mas você mesmo as cria. As imagens personalizadas podem ser usadas para configurações de inicialização como o pré-carregamento de aplicativos, configurações de aplicativos e outras configurações do sistema operacional. Neste tutorial, você criará sua própria imagem personalizada de uma máquina virtual do Azure. Você aprenderá como:

  • Criar uma Galeria de Computação do Azure (anteriormente conhecida como Galeria de Imagens Compartilhadas)
  • Criar uma definição de imagem
  • Criar uma versão de imagem
  • Criar uma VM de uma imagem
  • Compartilhar uma galeria

Este tutorial usa a CLI dentro do Azure Cloud Shell, que é constantemente atualizada para a versão mais recente. Para abrir o Cloud Shell, selecione Experimentar na parte superior de um bloco de código qualquer.

Se você optar por instalar e usar a CLI localmente, este tutorial exigirá que execute a CLI do Azure versão 2.4.0 ou posterior. Execute az --version para encontrar a versão. Se você precisa instalar ou atualizar, consulte Instalar a CLI do Azure.

Visão geral

Uma Galeria de Computação do Azure simplifica o compartilhamento da imagem personalizada em sua organização. Imagens personalizadas são como imagens do marketplace, mas você mesmo as cria. As imagens personalizadas podem ser usadas para configurações de inicialização como o pré-carregamento de aplicativos, configurações de aplicativos e outras configurações do sistema operacional.

A Galeria de Computação do Azure permite que você compartilhe suas imagens de VM personalizadas com outras pessoas. Escolha quais imagens você deseja compartilhar, em quais regiões deseja torná-las disponíveis e com quem deseja compartilhá-las.

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

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

Antes de começar

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

Para concluir o exemplo neste tutorial, você deverá ter uma máquina virtual. Se necessário, confira o Início rápido da CLI para criar uma VM a ser usada neste tutorial. Ao trabalhar no tutorial, substitua os nomes dos recursos se necessário.

Iniciar o Azure Cloud Shell

O Azure Cloud Shell é um shell interativo grátis que pode ser usado para executar as etapas neste artigo. Ele tem ferramentas do Azure instaladas e configuradas para usar com sua conta.

Para abrir o Cloud Shell, basta selecionar Experimentar no canto superior direito de um bloco de código. Você também pode iniciar o Cloud Shell em uma guia separada do navegador indo até https://shell.azure.com/powershell. Selecione Copiar para copiar os blocos de código, cole o código no Cloud Shell e depois pressione Enter para executá-lo.

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 finais. O nome da galeria não pode conter traços. Os nomes das galerias devem ser exclusivos dentro de sua assinatura.

Criar uma galeria usando az sig create. O exemplo a seguir cria um grupo de recursos da galeria chamado myGalleryRG no Leste dos EUA, bem como uma galeria chamada myGallery.

az group create --name myGalleryRG --location eastus
az sig create --resource-group myGalleryRG --gallery-name myGallery

Obter informações sobre a VM

Você pode ver uma lista das VMs disponíveis usando az vm list.

az vm list --output table

Quando souber o nome da VM e em qual grupo de recursos ela está, obtenha a ID da VM usando az vm get-instance-view.

az vm get-instance-view -g MyResourceGroup -n MyVm --query id

Copie a ID da VM para usar mais tarde.

Criar uma definição de imagem

As definições de imagem criam um agrupamento lógico para as imagens. Elas são usadas para gerenciar informações sobre as versões da imagem que são criadas dentro delas.

Os nomes das definições de imagem podem ser compostos por letras maiúsculas ou minúsculas, dígitos, pontos, traços e pontos finais.

Para obter mais informações sobre os valores que pode especificar para uma definição de imagem, confira Definições de imagem.

Crie uma definição de imagem na galeria usando az sig image-definition create.

Neste exemplo, a definição da imagem se chama myImageDefinition e é referente a uma imagem especializada do SO Linux.

az sig image-definition create \
   --resource-group myGalleryRG \
   --gallery-name myGallery \
   --gallery-image-definition myImageDefinition \
   --publisher myPublisher \
   --offer myOffer \
   --sku mySKU \
   --os-type Linux \
   --os-state specialized

Copie a ID da definição da imagem da saída para usar mais tarde.

Criar a versão da imagem

Crie uma versão da imagem com base na VM usando az image gallery create-image-version.

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.MinorVersion.Patch.

Neste exemplo, a versão de nossa imagem é 1.0.0 e criaremos duas réplicas na região do Centro-Oeste dos EUA, uma na região Centro-Sul dos EUA e uma na região Leste dos EUA 2 usando o armazenamento com redundância de zona. As regiões de replicação precisam incluir a região em que a VM de origem fica localizada.

Substitua o valor de --managed-image neste exemplo pela ID da VM da etapa anterior.

az sig image-version create \
   --resource-group myGalleryRG \
   --gallery-name myGallery \
   --gallery-image-definition myImageDefinition \
   --gallery-image-version 1.0.0 \
   --target-regions "westcentralus" "southcentralus=1" "eastus=1=standard_zrs" \
   --replica-count 2 \
   --managed-image "/subscriptions/<Subscription ID>/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM"

Observação

Você precisa esperar que a versão da imagem seja compilada e replicada completamente antes de poder usar a mesma imagem gerenciada para criar outra versão da imagem.

Você também pode armazenar a imagem no armazenamento Premium adicionando --storage-account-type premium_lrs, ou no Armazenamento com redundância de zona adicionando --storage-account-type standard_zrs ao criar a versão da imagem.

Criar a VM

Crie a VM usando az vm create e o parâmetro --specialized para indicar que se trata de uma imagem especializada.

Use a ID de definição de imagem de --image para criar a VM com base na versão mais recente da imagem que está disponível. Você também pode criar a VM com base em uma versão específica fornecendo a ID de versão da imagem de --image.

Neste exemplo, estamos criando uma VM com base na versão mais recente da imagem myImageDefinition.

az group create --name myResourceGroup --location eastus
az vm create --resource-group myResourceGroup \
    --name myVM \
    --image "/subscriptions/<Subscription ID>/resourceGroups/myGalleryRG/providers/Microsoft.Compute/galleries/myGallery/images/myImageDefinition" \
    --specialized

Você pode compartilhar imagens entre assinaturas usando o Azure RBAC (controle de acesso baseado em função do Azure). Você pode compartilhar imagens no nível da galeria, da definição da imagem e da versão da imagem. Qualquer usuário que tenha permissões de leitura para uma versão de imagem, mesmo entre assinaturas, poderá implantar uma VM usando a versão da imagem.

Recomendamos que você compartilhe com outros usuários no nível da galeria. Para obter a ID do objeto da galeria, use az sig show.

az sig show \
   --resource-group myGalleryRG \
   --gallery-name myGallery \
   --query id

Use a ID do objeto como um escopo, juntamente com um endereço de email e az role assignment create para conceder a um usuário acesso à Galeria de Computação do Azure. Substitua <email-address> e <gallery iD> pelas suas informações.

az role assignment create \
   --role "Reader" \
   --assignee <email address> \
   --scope <gallery ID>

Para obter mais informações sobre como compartilhar recursos usando o Azure RBAC, confira Adicionar ou remover atribuições de função do Azure usando a CLI do Azure.

Construtor de Imagens do Azure

O Azure também oferece um serviço integrado ao Packer, o Construtor de Imagens de VM do Azure. Basta descrever suas personalizações em um modelo e ele cuidará da criação da imagem.

Próximas etapas

Neste tutorial, você criou uma imagem de VM personalizada. Você 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 de uma imagem
  • Compartilhar uma galeria

Avance para o próximo tutorial para saber mais sobre máquinas virtuais de alta disponibilidade.