Skapa en ny VM-avbildning från en befintlig avbildning med hjälp av Azure VM Image Builder i Linux

Gäller för: ✔️ Flexibla skalningsuppsättningar för virtuella Linux-datorer ✔️

I den här artikeln får du lära dig hur du uppdaterar en befintlig avbildningsversion i ett Azure Compute-galleri (tidigare delat bildgalleri) och publicerar den i galleriet som en ny avbildningsversion.

För att konfigurera avbildningen använder du en JSON-exempelmall, helloImageTemplateforSIGfromSIG.json.

Registrera leverantörerna

Om du vill använda VM Image Builder måste du registrera leverantörerna.

  1. Kontrollera dina providerregistreringar. Kontrollera att var och en returnerar Registrerad.

    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. Om de inte returnerar Registrerad registrerar du leverantörerna genom att köra följande kommandon:

    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
    

Ange variabler och behörigheter

Om du redan har skapat ett Azure Compute-galleri med hjälp av Skapa en avbildning och distribuera den till ett Azure Compute-galleri har du redan skapat några av de variabler du behöver.

  1. Om du inte redan har skapat variablerna kör du följande kommandon:

    # 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. Skapa en variabel för ditt prenumerations-ID:

    subscriptionID=$(az account show --query id --output tsv)
    
  3. Hämta den avbildningsversion som du vill uppdatera:

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

Skapa en användartilldelad identitet och ange behörigheter för resursgruppen

Du har konfigurerat användaridentiteten i ett tidigare exempel, så nu måste du hämta resurs-ID:t som läggs till i mallen.

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

Om du redan har ett Azure Compute-galleri men inte har konfigurerat det genom att följa ett tidigare exempel måste du tilldela behörigheter för VM Image Builder för att få åtkomst till resursgruppen så att den kan komma åt galleriet. Mer information finns i Skapa en avbildning och distribuera den till ett Azure Compute-galleri.

Ändra helloImage-exemplet

Du kan granska JSON-exemplet som du ska använda på helloImageTemplateforSIGfromSIG.json. Information om JSON-filen finns i Skapa en mall för avbildningsverktyget för virtuella Azure-datorer.

  1. Ladda ned JSON-exemplet, som du ser i Skapa en Linux-avbildning och distribuera det till ett Azure Compute-galleri med hjälp av Azure CLI.

  2. Konfigurera JSON med dina variabler:

    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
    

Skapa avbildningen

  1. Skicka avbildningskonfigurationen till tjänsten Image Builder för den virtuella datorn:

    az resource create \
        --resource-group $sigResourceGroup \
        --properties @helloImageTemplateforSIGfromSIG.json \
        --is-full-object \
        --resource-type Microsoft.VirtualMachineImages/imageTemplates \
        -n helloImageTemplateforSIGfromSIG01
    
  2. Starta avbildningsversionen:

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

Vänta tills avbildningen har skapats och replikerats innan du går vidare till nästa steg.

Skapa den virtuella datorn

  1. Skapa den virtuella datorn genom att göra följande:

    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. Skapa en SSH-anslutning (Secure Shell) till den virtuella datorn med hjälp av den virtuella datorns offentliga IP-adress.

    ssh azureuser@<pubIp>
    

    När SSH-anslutningen har upprättats bör du få ett meddelande om att avbildningen har anpassats:

    *******************************************************
    **            This VM was built from the:            **
    **      !! AZURE VM IMAGE BUILDER Custom Image !!    **
    **         You have just been Customized :-)         **
    *******************************************************
    
  3. Skriv exit för att stänga SSH-anslutningen.

  4. Om du vill visa en lista över de avbildningsversioner som nu är tillgängliga i galleriet kör du:

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

Nästa steg

Mer information om komponenterna i JSON-filen som du använde i den här artikeln finns i Skapa en azure VM Image Builder-mall.