Condividi tramite


Creare una nuova immagine di macchina virtuale Windows da un'immagine esistente usando Image Builder di macchine virtuali di Azure

Si applica a: ✔️ macchine virtuali di Windows

Questo articolo illustra come aggiornare una versione esistente di un'immagine di Windows in una raccolta di calcolo di Azure (in precedenza Raccolta immagini condivise) e pubblicarla nella raccolta come nuova versione dell'immagine.

Per configurare l'immagine, usare un modello JSON di esempio helloImageTemplateforSIGfromWinSIG.json.

Registrare i provider

Per usare Image Builder per macchine virtuali, è necessario registrare i provider.

  1. Controllare le registrazioni del provider. Assicurarsi che ognuno restituisca Registrato.

    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 non restituiscono Registrato, registrare i provider eseguendo i comandi seguenti:

    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
    

Impostare variabili e autorizzazioni

Se è già stata creata una raccolta di calcolo di Azure usando Creare un'immagine e distribuirla in una raccolta di calcolo di Azure, sono già state create alcune delle variabili necessarie.

Nota

Vm Image Builder supporta la creazione di immagini personalizzate solo nello stesso gruppo di risorse in cui si trova l'immagine gestita dall'origine. Nell'esempio seguente aggiornare il nome del gruppo di risorse, ibsigRG, con il nome del gruppo di risorse in cui si trova l'immagine gestita dall'origine.

  1. Se le variabili non sono già state create, eseguire i comandi seguenti:

    # 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. Creare una variabile per l'ID di sottoscrizione:

    subscriptionID=$(az account show --query id --output tsv)
    
  3. Ottenere la versione dell'immagine da aggiornare:

    sigDefImgVersionId=$(az sig image-version list \
    -g $sigResourceGroup \
    --gallery-name $sigName \
    --gallery-image-definition $imageDefName \
    --subscription $subscriptionID --query [].'id' -o tsv)
    

Creare un'identità assegnata dall'utente e impostare autorizzazioni per il gruppo di risorse

L'identità utente è stata configurata in un esempio precedente, quindi ora è necessario ottenere l'ID risorsa, che verrà aggiunto al modello.

#get identity used previously
imgBuilderId=$(az identity list -g $sigResourceGroup --query "[?contains(name, 'aibBuiUserId')].id" -o tsv)

Se si ha già una raccolta di calcolo di Azure ma non è stata configurata seguendo un esempio precedente, è necessario assegnare le autorizzazioni per Image Builder per macchine virtuali per accedere al gruppo di risorse in modo che possa accedere alla raccolta. Per altre informazioni, vedere Creare un'immagine e distribuirla in una raccolta di calcolo di Azure.

Modificare l'esempio helloImage

È possibile esaminare l'esempio JSON che si sta per usare in helloImageTemplateforSIGfromSIG.json. Per informazioni sul file JSON, vedere Creare un modello di Image Builder per macchine virtuali di Azure.

  1. Scaricare l'esempio JSON, come illustrato in Creare un'identità assegnata dall'utente e impostare le autorizzazioni per il gruppo di risorse.

  2. Configurare il codice JSON con le variabili:

    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
    

Creare l'immagine

  1. Inviare la configurazione dell'immagine al servizio Image Builder per macchine virtuali:

    az resource create \
        --resource-group $sigResourceGroup \
        --location $location \
        --properties @helloImageTemplateforSIGfromWinSIG.json \
        --is-full-object \
        --resource-type Microsoft.VirtualMachineImages/imageTemplates \
        -n imageTemplateforSIGfromWinSIG01
    
  2. Avviare la compilazione dell'immagine:

    az resource invoke-action \
        --resource-group $sigResourceGroup \
        --resource-type  Microsoft.VirtualMachineImages/imageTemplates \
        -n imageTemplateforSIGfromWinSIG01 \
        --action Run 
    

Attendere che l'immagine venga compilata e replicata prima di procedere con il passaggio successivo.

Creare la macchina virtuale

Creare la macchina virtuale eseguendo le operazioni seguenti:

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

Verificare la personalizzazione

Creare una connessione Desktop remoto alla macchina virtuale usando il nome utente e la password impostati al momento della creazione della macchina virtuale. All'interno della macchina virtuale aprire una finestra del prompt dei comandi e quindi eseguire:

dir c:\

Verranno ora visualizzate due directory:

  • buildActions: creato nella prima versione dell'immagine.
  • buildActions2: creato quando è stata aggiornata la prima versione dell'immagine per creare la seconda versione dell'immagine.

Passaggi successivi

Per altre informazioni sui componenti del file JSON usato in questo articolo, vedere Creare un modello di Image Builder per macchine virtuali di Azure.