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
Use o ambiente Bash no Azure Cloud Shell. Para obter mais informações, confira Início Rápido para Bash no Azure Cloud Shell.
Se preferir executar os comandos de referência da CLI localmente, instale a CLI do Azure. Para execuções no Windows ou no macOS, considere executar a CLI do Azure em um contêiner do Docker. Para obter mais informações, confira Como executar a CLI do Azure em um contêiner do Docker.
Se estiver usando uma instalação local, entre com a CLI do Azure usando o comando az login. Para concluir o processo de autenticação, siga as etapas exibidas no terminal. Para ver outras opções de entrada, confira Conectar-se com a CLI do Azure.
Quando solicitado, instale a extensão da CLI do Azure no primeiro uso. Para obter mais informações sobre extensões, confira Usar extensões com a CLI do Azure.
Execute az version para localizar a versão e as bibliotecas dependentes que estão instaladas. Para fazer a atualização para a versão mais recente, execute az upgrade.
- 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.
Criar uma galeria de imagens
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.
Compartilhar a galeria
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.