Partilhar via


Criar uma nova imagem de VM do Windows a partir de 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 existente do Windows 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.

Registar os fornecedores

Para usar o VM Image Builder, você precisa registrar os provedores.

  1. Verifique os registos do seu fornecedor. Certifique-se de que 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 Registrado, 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ê já 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.

Nota

O VM Image Builder oferece suporte à criação de imagens personalizadas somente no mesmo grupo de recursos em que a imagem gerenciada pela fonte 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 pela fonte 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 o ID da sua subscrição:

    subscriptionID=$(az account show --query id --output tsv)
    
  3. Obtenha a versão da imagem que pretende 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, então agora você precisa obter o ID do recurso, que será anexado 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 a configurou 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, consulte Criar uma imagem e distribuí-la para uma Galeria de Computação do Azure.

Modificar o exemplo helloImage

Você pode revisar o exemplo JSON que está prestes a usar em helloImageTemplateforSIGfromSIG.json. Para obter informações sobre o arquivo JSON, consulte 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 da imagem para o serviço VM Image Builder:

    az resource create \
        --resource-group $sigResourceGroup \
        --location $location \
        --properties @helloImageTemplateforSIGfromWinSIG.json \
        --is-full-object \
        --resource-type Microsoft.VirtualMachineImages/imageTemplates \
        -n imageTemplateforSIGfromWinSIG01
    
  2. Inicie a construção 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 para a VM usando o nome de usuário e a senha definidos quando você criou a VM. Dentro da VM, abra uma janela de 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óximos passos

Para saber mais sobre os componentes do arquivo JSON que você usou neste artigo, consulte Criar um modelo do Azure VM Image Builder.