Condividi tramite


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

Si applica a: ✔️ macchine virtuali di Linux ✔️ set di scalabilità flessibili

Questo articolo illustra come aggiornare una versione di immagine esistente nella 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 helloImageTemplateforSIGfromSIG.json di esempio.

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.

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

    # Resource group name 
    sigResourceGroup=ibLinuxGalleryRG
    # Gallery location 
    location=westus2
    # Additional region to replicate the image version to 
    additionalregion=eastus
    # Name of the Azure Compute Gallery 
    sigName=myIbGallery
    # Name of the image definition to use
    imageDefName=myIbImageDef
    # image distribution metadata reference name
    runOutputName=aibSIGLinuxUpdate
    
  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'immagine Linux e distribuirla in una Raccolta di calcolo di Azure usando l'interfaccia della riga di comando di Azure.

  2. Configurare il codice JSON con le variabili:

    curl https://raw.githubusercontent.com/azure/azvmimagebuilder/master/quickquickstarts/8_Creating_a_Custom_Linux_Shared_Image_Gallery_Image_from_SIG/helloImageTemplateforSIGfromSIG.json -o helloImageTemplateforSIGfromSIG.json
    sed -i -e "s/<subscriptionID>/$subscriptionID/g" helloImageTemplateforSIGfromSIG.json
    sed -i -e "s/<rgName>/$sigResourceGroup/g" helloImageTemplateforSIGfromSIG.json
    sed -i -e "s/<imageDefName>/$imageDefName/g" helloImageTemplateforSIGfromSIG.json
    sed -i -e "s/<sharedImageGalName>/$sigName/g" helloImageTemplateforSIGfromSIG.json
    sed -i -e "s%<sigDefImgVersionId>%$sigDefImgVersionId%g" helloImageTemplateforSIGfromSIG.json
    sed -i -e "s/<region1>/$location/g" helloImageTemplateforSIGfromSIG.json
    sed -i -e "s/<region2>/$additionalregion/g" helloImageTemplateforSIGfromSIG.json
    sed -i -e "s/<runOutputName>/$runOutputName/g" helloImageTemplateforSIGfromSIG.json
    sed -i -e "s%<imgBuilderId>%$imgBuilderId%g" helloImageTemplateforSIGfromSIG.json
    

Creare l'immagine

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

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

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

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

Creare la macchina virtuale

  1. Creare la macchina virtuale eseguendo le operazioni seguenti:

    az vm create \
    --resource-group $sigResourceGroup \
    --name aibImgVm001 \
    --admin-username azureuser \
    --location $location \
    --image "/subscriptions/$subscriptionID/resourceGroups/$sigResourceGroup/providers/Microsoft.Compute/galleries/$sigName/images/$imageDefName/versions/latest" \
    --generate-ssh-keys
    
  2. Creare una connessione Secure Shell (SSH) alla macchina virtuale usando l'indirizzo IP pubblico della macchina virtuale.

    ssh azureuser@<pubIp>
    

    Dopo aver stabilito la connessione SSH, si dovrebbe ricevere un messaggio "Messaggio del giorno" che informa che l'immagine è stata personalizzata:

    *******************************************************
    **            This VM was built from the:            **
    **      !! AZURE VM IMAGE BUILDER Custom Image !!    **
    **         You have just been Customized :-)         **
    *******************************************************
    
  3. Digitare exit per chiudere la connessione SSH.

  4. Per elencare le versioni delle immagini ora disponibili nella raccolta, eseguire:

    az sig image-version list -g $sigResourceGroup -r $sigName -i $imageDefName -o table
    

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.