Compartilhar via


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.

  1. 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
    
  2. 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á.

  1. 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"
    
  2. Crie uma variável para a ID da assinatura:

    subscriptionID=$(az account show --query id --output tsv)
    
  3. 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.

  1. Baixe o exemplo JSON, conforme mostrado em Criar uma identidade atribuída pelo usuário e definir permissões no grupo de recursos.

  2. 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

  1. 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
    
  2. 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.