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.
Om du vill 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.
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
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.
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
Skapa en variabel för ditt prenumerations-ID:
subscriptionID=$(az account show --query id --output tsv)
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.
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.
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
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
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
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
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 :-) ** *******************************************************
Skriv
exit
för att stänga SSH-anslutningen.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.