Criar uma imagem de VM do Windows com base em uma imagem existente usando o Construtor de Imagens de VM do Azure
Aplica-se a: ✔️ VMs do Windows
Neste artigo, você aprenderá como atualizar uma versão de imagem do Windows existente em uma Galeria de Computação do Azure (anteriormente Galeria de Imagens Compartilhadas) e publicá-la na galeria como uma nova versão de imagem.
Para configurar a imagem, use um modelo JSON de exemplo, helloImageTemplateforSIGfromWinSIG.json.
Registrar os provedores
Para usar o Construtor de Imagens de VM, é preciso registrar os provedores.
Verifique os registros do provedor. Verifique se cada um retorna Registrado.
az provider show -n Microsoft.VirtualMachineImages | grep registrationState az provider show -n Microsoft.KeyVault | grep registrationState az provider show -n Microsoft.Compute | grep registrationState az provider show -n Microsoft.Storage | grep registrationState az provider show -n Microsoft.Network | grep registrationState az provider show -n Microsoft.ContainerInstance | grep registrationState
Se eles não retornarem Registrados, registre os provedores executando os seguintes comandos:
az provider register -n Microsoft.VirtualMachineImages az provider register -n Microsoft.Compute az provider register -n Microsoft.KeyVault az provider register -n Microsoft.Storage az provider register -n Microsoft.Network az provider register -n Microsoft.ContainerInstance
Definir variáveis e permissões
Se você criou uma Galeria de Computação do Azure usando Criar uma imagem e distribuí-la para uma Galeria de Computação do Azure, já criou algumas das variáveis necessárias.
Observação
O Construtor de Imagens de VM dá suporte à criação de imagens personalizadas apenas no mesmo grupo de recursos no qual a imagem gerenciada de origem está. No exemplo a seguir, atualize o nome do grupo de recursos, ibsigRG, com o nome do grupo de recursos no qual a imagem gerenciada de origem está.
Se você ainda não criou as variáveis, execute os seguintes comandos:
# Resource group name - we are using ibsigRG in this example sigResourceGroup=myIBWinRG # Datacenter location - we are using West US 2 in this example location=westus # Additional region to replicate the image to - we are using East US in this example additionalregion=eastus # name of the Azure Compute Gallery - in this example we are using myGallery sigName=my22stSIG # name of the image definition to be created - in this example we are using myImageDef imageDefName=winSvrimages # image distribution metadata reference name runOutputName=w2019SigRo # User name and password for the VM username="user name for the VM" vmpassword="password for the VM"
Crie uma variável para a ID da assinatura:
subscriptionID=$(az account show --query id --output tsv)
Obtenha a versão da imagem que você deseja atualizar:
sigDefImgVersionId=$(az sig image-version list \ -g $sigResourceGroup \ --gallery-name $sigName \ --gallery-image-definition $imageDefName \ --subscription $subscriptionID --query [].'id' -o tsv)
Criar uma identidade atribuída pelo usuário e definir permissões no grupo de recursos
Você configurou a identidade do usuário em um exemplo anterior, portanto agora você precisará obter a ID do recurso, que será acrescentada ao modelo.
#get identity used previously
imgBuilderId=$(az identity list -g $sigResourceGroup --query "[?contains(name, 'aibBuiUserId')].id" -o tsv)
Se você já tiver uma Galeria de Computação do Azure, mas não tiver configurado seguindo um exemplo anterior, precisará atribuir permissões para que o Construtor de Imagens de VM acesse o grupo de recursos, para que ele possa acessar a galeria. Para obter mais informações, veja Criar uma imagem e distribuí-la para uma Galeria de Computação do Azure.
Modificar o exemplo helloImage
Você pode examinar o exemplo JSON que está prestes a usar em helloImageTemplateforSIGfromSIG.json. Para obter informações sobre o arquivo JSON, veja Criar um modelo do Construtor de Imagens de VM do Azure.
Baixe o exemplo JSON, conforme mostrado em Criar uma identidade atribuída pelo usuário e definir permissões no grupo de recursos.
Configure o JSON com suas variáveis:
curl https://raw.githubusercontent.com/azure/azvmimagebuilder/master/quickquickstarts/8_Creating_a_Custom_Win_Shared_Image_Gallery_Image_from_SIG/helloImageTemplateforSIGfromWinSIG.json -o helloImageTemplateforSIGfromWinSIG.json sed -i -e "s/<subscriptionID>/$subscriptionID/g" helloImageTemplateforSIGfromWinSIG.json sed -i -e "s/<rgName>/$sigResourceGroup/g" helloImageTemplateforSIGfromWinSIG.json sed -i -e "s/<imageDefName>/$imageDefName/g" helloImageTemplateforSIGfromWinSIG.json sed -i -e "s/<sharedImageGalName>/$sigName/g" helloImageTemplateforSIGfromWinSIG.json sed -i -e "s%<sigDefImgVersionId>%$sigDefImgVersionId%g" helloImageTemplateforSIGfromWinSIG.json sed -i -e "s/<region1>/$location/g" helloImageTemplateforSIGfromWinSIG.json sed -i -e "s/<region2>/$additionalregion/g" helloImageTemplateforSIGfromWinSIG.json sed -i -e "s/<runOutputName>/$runOutputName/g" helloImageTemplateforSIGfromWinSIG.json sed -i -e "s%<imgBuilderId>%$imgBuilderId%g" helloImageTemplateforSIGfromWinSIG.json
Criar a imagem
Envie a configuração de imagem para o serviço Construtor de Imagens de VM:
az resource create \ --resource-group $sigResourceGroup \ --location $location \ --properties @helloImageTemplateforSIGfromWinSIG.json \ --is-full-object \ --resource-type Microsoft.VirtualMachineImages/imageTemplates \ -n imageTemplateforSIGfromWinSIG01
Inicie o build da imagem:
az resource invoke-action \ --resource-group $sigResourceGroup \ --resource-type Microsoft.VirtualMachineImages/imageTemplates \ -n imageTemplateforSIGfromWinSIG01 \ --action Run
Aguarde até que a imagem seja criada e replicada antes de passar para a próxima etapa.
Criar a VM
Crie a VM fazendo o seguinte:
az vm create \
--resource-group $sigResourceGroup \
--name aibImgWinVm002 \
--admin-username $username \
--admin-password $vmpassword \
--image "/subscriptions/$subscriptionID/resourceGroups/$sigResourceGroup/providers/Microsoft.Compute/galleries/$sigName/images/$imageDefName/versions/latest" \
--location $location
Verificar a personalização
Crie uma Conexão de Área de Trabalho Remota com a VM usando o nome de usuário e a senha que você definiu quando criou a VM. Na VM, abra uma janela do Prompt de Comando e execute:
dir c:\
Agora, você deve ver dois diretórios:
- buildActions: criado na primeira versão da imagem.
- buildActions2: criado quando você atualizou a primeira versão da imagem para criar a segunda versão da imagem.
Próximas etapas
Para saber mais sobre os componentes do arquivo JSON que você utilizou neste artigo, veja Criar um modelo do Construtor de Imagens de VM do Azure.