Tutorial: Criar e usar uma imagem personalizada para Conjuntos de Dimensionamento de Máquina Virtual com a CLI do Azure
Quando cria um conjunto de dimensionamento, tem de especificar uma imagem a ser utilizada quando as instâncias de VM são implementadas. Para reduzir o número de tarefas após as instâncias de VM serem implementadas, pode utilizar uma imagem de VM personalizada. Esta imagem de VM personalizada inclui instalações ou configurações de aplicações obrigatórias. Quaisquer instâncias de VM criadas no conjunto de dimensionamento utilizam a imagem de VM personalizada e estão prontas para apresentar o seu tráfego de aplicações. Neste tutorial, ficará a saber como:
- 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 escala a partir de uma imagem especializada
- Partilhar uma galeria de imagens
Se não tiver uma subscrição 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, consulte Guia de início rápido para Bash no Azure Cloud Shell.
Se preferir executar comandos de referência da CLI localmente, instale a CLI do Azure. Se estiver a utilizar o Windows ou macOS, considere executar a CLI do Azure num contentor Docker. Para obter mais informações, consulte Como executar a CLI do Azure em um contêiner do Docker.
Se estiver a utilizar uma instalação local, inicie sessão no CLI do Azure ao utilizar o comando az login. Para concluir o processo de autenticação, siga os passos apresentados no seu terminal. Para outras opções de entrada, consulte Entrar com a CLI do Azure.
Quando solicitado, instale a extensão da CLI do Azure na primeira utilização. Para obter mais informações sobre as extensões, veja Utilizar extensões com o CLI do Azure.
Execute o comando az version para localizar a versão e as bibliotecas dependentes instaladas. Para atualizar para a versão mais recente, execute o comando az upgrade.
- Este artigo requer a versão 2.4.0 ou posterior da CLI do Azure. Se estiver usando o Azure Cloud Shell, a versão mais recente já está instalada.
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.
Criar e configurar uma VM de origem
Em primeiro lugar, crie um grupo de recursos com az group create e, em seguida, crie uma VM com az vm create. Essa VM é então usada como a fonte para a 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
Gorjeta
O ID da sua VM é mostrado na saída do comando az vm create . Copie e armazene em um local seguro para que você possa usá-lo mais tarde neste 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 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 de imagens usando az sig create.
No exemplo a seguir:
- Você cria um grupo de recursos para a galeria chamada myGalleryRG localizada no Leste dos EUA.
- A galeria chama-se 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 imagens. Eles são usados para gerenciar informações sobre as versões de imagem que são criadas neles.
Os nomes de definição de imagem podem ser compostos por letras maiúsculas ou minúsculas, dígitos, pontos, traços e pontos.
Certifique-se de que a definição da imagem é do tipo certo:
- Estado - Se você generalizou a VM (usando Sysprep para Windows ou waagent -deprovision para Linux), então você deve criar uma definição de imagem generalizada usando
--os-state generalized
. Se você quiser usar a VM sem remover contas de usuário existentes, crie uma definição de imagem especializada usando--os-state specialized
o . - Tipo de segurança - As novas VMs do Azure são criadas com o Início Confiável configurado por padrão. Este tutorial inclui exemplos de código subsequentes que refletem a configuração de inicialização 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 a Inicialização Confiável habilitada, certifique-se de refletir o tipo de segurança correto ao criar esses dois recursos. Para obter mais informações sobre o Início Confiável, consulte Inicialização Confiável para máquinas virtuais do Azure.
Para obter mais informações sobre os valores que você pode especificar para uma definição de imagem, consulte 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 de imagem é:
- Nomeado myImageDefinition.
- Configurado para uma imagem especializada do sistema operacional Linux. Para criar uma definição para imagens usando um sistema operacional Windows, use
--os-type Windows
. - Configurado para inicialização 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
Gorjeta
O ID da definição da imagem é mostrado na saída do comando. Copie e armazene em um local seguro para que você possa usá-lo mais tarde neste tutorial.
Criar a versão da imagem
Crie uma versão de imagem a partir da 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.Versão Menor.Adesivo.
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 devem incluir a região em que a VM de origem está localizada.
--virtual-machine
é a 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
Nota
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 sua imagem no armazenamento Premium adicionando --storage-account-type premium_lrs
ou no Armazenamento com Redundância de Zona adicionando --storage-account-type standard_zrs
quando criar a versão da imagem.
Criar um conjunto de escalas a partir da imagem
Você cria um conjunto de escala usando az vmss create
o . 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 para --image
criar as instâncias do conjunto de escalas, você cria um conjunto de escala 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 definir o --image
.
Exemplo de imagem mais recente:
/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 escala é:
- Nomeado myScaleSet
- Usando a versão mais recente da imagem myImageDefinition .
- Configurado para inicialização 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
A criação e configuração de todas as VMs e recursos do conjunto de dimensionamento demora alguns minutos.
Partilhe 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 role assignment create.
- Usa a 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 possa acessar essa imagem. Para obter mais informações sobre como compartilhar recursos usando o RBAC do Azure, consulte Adicionar ou remover atribuições de função do Azure usando a CLI do Azure. , juntamente com um endereço de e-mail, usando az role assignment create para dar a um usuário acesso à galeria de imagens compartilhadas.
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
Clean up resources (Limpar recursos)
Para remover o seu conjunto de dimensionamento e recursos adicionais, elimine o grupo de recursos e todos os respetivos recursos com az group delete. O parâmetro --no-wait
devolve o controlo à linha de comandos, sem aguardar a conclusão da operação. O parâmetro --yes
confirma que pretende eliminar os recursos sem uma linha de comandos adicional para fazê-lo.
Próximos passos
Neste tutorial, aprendeu a criar e a utilizar uma imagem de VM personalizada nos seus conjuntos de dimensionamento com a CLI 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 escala a partir de uma imagem especializada
- Partilhar uma galeria de imagens
Prossiga para o próximo tutorial para saber como implementar aplicações no seu conjunto de dimensionamento.