Tutorial: criar e usar uma imagem personalizada para Conjuntos de Dimensionamento de Máquinas Virtuais com a CLI do Azure

Ao criar um conjunto de dimensionamento, você especifica uma imagem a ser usada quando as instâncias de VM forem implantadas. Para reduzir a quantidade de tarefas depois que as instâncias de VM forem implantadas, é possível usar uma imagem de VM personalizada. Esta imagem de VM personalizada inclui todas as instalações ou configurações de aplicativo necessárias. Todas as instâncias de VM criadas no conjunto de dimensionamento usam a imagem de VM personalizada e estão prontas para atender ao tráfego do aplicativo. Neste tutorial, você aprenderá a:

  • Criar uma Galeria de Computação do Azure
  • Criar uma definição de imagem especializada
  • Criar uma versão de imagem
  • Criar um conjunto de dimensionamento com base em uma imagem personalizada
  • Compartilhar uma galeria de imagens

Caso você não tenha uma assinatura do Azure, crie uma conta gratuita do Azure antes de começar.

Pré-requisitos

  • Este artigo exige a versão 2.4.0 ou posterior da CLI do Azure. Se você está usando o Azure Cloud Shell, a versão mais recente já está instalada.

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.

Criar e configurar uma VM de origem

Primeiro, crie um grupo de recursos com az group create; em seguida, crie uma VM com az vm create. Essa VM é usada como a origem da imagem.

O exemplo a seguir cria uma VM baseada em Linux chamada myVM no grupo de recursos chamado myResourceGroup.

export RANDOM_ID=$(openssl rand -hex 3)
export MY_RESOURCE_GROUP_NAME="myResourceGroup$RANDOM_ID"
export REGION="eastus"
export MY_VM_NAME="myVM"

az group create --name $MY_RESOURCE_GROUP_NAME --location $REGION

az vm create \
  --resource-group $MY_RESOURCE_GROUP_NAME \
  --name $MY_VM_NAME \
  --image debian11 \
  --admin-username azureuser \
  --generate-ssh-keys

Dica

A ID da VM é mostrada na saída do comando az vm create. Copie e armazene em um local seguro para que você possa usar mais tarde nesse tutorial.

Uma galeria de imagens é o principal recurso usado para habilitar o compartilhamento de imagens.

Os caracteres permitidos para nomes de galerias 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 dentro de sua assinatura.

Criar uma galeria de imagens usando az sig create.

No exemplo a seguir:

  • Você cria um grupo de recursos para a galeria chamada myGalleryRG localizada em East US.
  • A galeria é chamada myGallery.
export MY_GALLERY_RG_NAME="myGalleryRG$RANDOM_ID"
export MY_GALLERY_NAME="myGallery$RANDOM_ID"

az group create --name $MY_GALLERY_RG_NAME --location $REGION
az sig create --resource-group $MY_GALLERY_RG_NAME --gallery-name $MY_GALLERY_NAME

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.

Certifique-se de que a definição da sua imagem seja do tipo correto:

  • Estado - Se você generalizou a VM (usando Sysprep para Windows ou waagent -deprovision para Linux), você deve criar uma definição de imagem generalizada usando--os-state generalized. Se quiser usar a VM sem remover contas de usuário existentes, crie uma definição de imagem especializada usando --os-state specialized.
  • Tipo de segurança - Novas VMs do Azure são criadas com o início confiável configurado por padrão. Esse tutorial inclui exemplos de código subsequentes que refletem a configuração do início confiável ao criar a definição de imagem e o conjunto de escala. Se você estiver criando uma imagem com uma VM que não tenha o início confiável habilitado, certifique-se de refletir o tipo de segurança correto ao criar ambos os recursos. Para obter mais informações sobre o início confiável, veja início confiável para máquinas virtuais do Azure.

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.

No exemplo a seguir, a definição da imagem é:

  • Nomeado myImageDefinition.
  • Configurado para uma imagem especializada do sistema operacional Linux. Para criar uma definição para imagens usando um SO Windows, use --os-type Windows.
  • Configurado para início confiável.
export MY_IMAGE_DEF_NAME="myImageDefinition$RANDOM_ID"
MY_PUBLISHER_NAME="myPublisher$RANDOM_ID"

az sig image-definition create \
   --resource-group $MY_GALLERY_RG_NAME \
   --gallery-name $MY_GALLERY_NAME \
   --gallery-image-definition $MY_IMAGE_DEF_NAME \
   --publisher $MY_PUBLISHER_NAME \
   --offer myOffer \
   --sku mySKU \
   --os-type Linux \
   --os-state specialized \
   --features SecurityType=TrustedLaunch

Dica

A ID da definição da imagem é mostrada na saída do comando. Copie e armazene em um local seguro para que você possa usar mais tarde nesse tutorial.

Criar a versão da imagem

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

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

No exemplo a seguir:

  • A versão da imagem é 1.0.0.
  • Criamos uma réplica na região centro-sul dos EUA e uma réplica na região leste dos EUA. As regiões de replicação precisam incluir a região em que a VM de origem fica localizada.
  • --virtual-machine é o ID da VM que criamos anteriormente.
export MY_VM_ID=$(az vm show --name $MY_VM_NAME --resource-group $MY_RESOURCE_GROUP_NAME --query "id" --output tsv)

az sig image-version create \
   --resource-group $MY_GALLERY_RG_NAME \
   --gallery-name $MY_GALLERY_NAME \
   --gallery-image-definition $MY_IMAGE_DEF_NAME \
   --gallery-image-version 1.0.0 \
   --target-regions "southcentralus=1" "eastus=1" \
   --virtual-machine $MY_VM_ID

Observação

Você precisa esperar que a versão da imagem termine completamente de ser construída e replicada antes de poder usar a mesma imagem 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 um conjunto de dimensionamento com base na imagem

Você cria um conjunto de escalas usando az vmss create. Se você estiver usando uma VM de origem especializada, adicione o --specialized parâmetro para indicar que é uma imagem especializada.

Ao usar o ID de definição de imagem --image para criar instâncias do conjunto de escalas, você cria um conjunto de escalas que usa a versão mais recente da imagem disponível. Se você quiser uma versão específica da imagem, certifique-se de incluir o ID da versão da imagem ao defini-la --image.

  • Último exemplo de imagem: /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG/providers/Microsoft.Compute/galleries/myGallery/images/myImage

  • Exemplo de imagem específica: /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG/providers/Microsoft.Compute/galleries/myGallery/images/myImage/versions/1.0.0

No exemplo a seguir, o conjunto de escalas é:

  • Nomeado myScaleSet
  • Usando a versão mais recente da imagem myImageDefinition.
  • Configurado para início confiável.
export MY_IMAGE_DEF_ID=$(az sig image-definition show --resource-group $MY_GALLERY_RG_NAME --gallery-name $MY_GALLERY_NAME --gallery-image-definition $MY_IMAGE_DEF_NAME --query "id" --output tsv)
export MY_SCALE_SET_RG_NAME="myResourceGroup$RANDOM_ID"
export MY_SCALE_SET_NAME="myScaleSet$RANDOM_ID"

az group create --name $MY_SCALE_SET_RG_NAME --location eastus

az vmss create \
   --resource-group $MY_SCALE_SET_RG_NAME \
   --name $MY_SCALE_SET_NAME \
   --orchestration-mode flexible \
   --image $MY_IMAGE_DEF_ID \
   --specialized \
   --security-type TrustedLaunch

Leva alguns minutos para criar e configurar todos os recursos e as VMs do conjunto de dimensionamento.

Você pode compartilhar imagens entre assinaturas usando o controle de acesso baseado em função do Azure (Azure RBAC) e pode compartilhá-las nos níveis de galeria, definição de imagem ou versão de imagem. Qualquer usuário com permissão de leitura para uma versão de imagem, mesmo entre assinaturas, pode implantar uma VM usando a versão de imagem.

Recomendamos que você compartilhe com outros usuários no nível da galeria.

O exemplo a seguir:

  • Obtém o ID do objeto da galeria usando az sig show.
  • Fornece acesso à galeria usando az atribuição de função criar.
    • Usa o ID do objeto como o escopo da atribuição.
    • Usa o ID do usuário conectado como cessionário para fins de demonstração. Ao usar esse código em seu código de teste ou produção, certifique-se de atualizar o cessionário para refletir quem você deseja que tenha acesso a essa imagem. 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. , juntamente com um endereço de email, usando az role assignment create para dar ao usuário acesso à galeria de imagens compartilhada.
export MY_GALLERY_ID=$(az sig show --resource-group $MY_GALLERY_RG_NAME --gallery-name $MY_GALLERY_NAME --query "id" --output tsv)
export CALLER_ID=$(az ad signed-in-user show --query id -o tsv)

az role assignment create \
   --role "Reader" \
   --assignee $CALLER_ID \
   --scope $MY_GALLERY_ID

Limpar os recursos

Para remover o conjunto de dimensionamento e outros recursos, exclua o grupo de recursos e todos os seus recursos com az group delete. O parâmetro --no-wait retorna o controle ao prompt sem aguardar a conclusão da operação. O parâmetro --yes confirma que você deseja excluir os recursos sem um prompt adicional para fazer isso.

Próximas etapas

Neste tutorial, você aprendeu a criar e usar uma imagem de VM personalizada para seus conjuntos de dimensionamento com a CLI 2.0 do Azure:

  • Criar uma Galeria de Computação do Azure
  • Criar uma definição de imagem especializada
  • Criar uma versão de imagem
  • Criar um conjunto de dimensionamento com base em uma imagem personalizada
  • Compartilhar uma galeria de imagens

Siga para o próximo tutorial para saber como implantar aplicativo ao seu conjunto de dimensionamento.