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.
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
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.
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"
Creare una variabile per l'ID di sottoscrizione:
subscriptionID=$(az account show --query id --output tsv)
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.
Scaricare l'esempio JSON, come illustrato in Creare un'identità assegnata dall'utente e impostare le autorizzazioni per il gruppo di risorse.
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
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
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.