Erstellen eines neuen VM-Images anhand eines vorhandenen Images mithilfe von Azure VM Image Builder unter Linux

Gilt für: ✔️ Linux-VMs ✔️ Flexible Skalierungsgruppen

In diesem Artikel erfahren Sie, wie Sie eine vorhandene Imageversion in einer Instanz von Azure Compute Gallery (ehemals Shared Image Gallery) aktualisieren und als neue Imageversion im Katalog veröffentlichen.

Sie konfigurieren das Image mithilfe der JSON-Beispielvorlage helloImageTemplateforSIGfromSIG.json.

Registrieren Sie die Anbieter

Um den VM Image Builder zu verwenden, müssen Sie die Anbieter registrieren.

  1. Überprüfen Sie Ihre Anbieterregistrierungen. Stellen Sie sicher, dass für jeden Anbieter Registriert zurückgegeben wird.

    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. Wenn nicht Registriert zurückgegeben wird, registrieren Sie die Anbieter, indem Sie die folgenden Befehle ausführen:

    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
    

Festlegen von Variablen und Berechtigungen

Wenn Sie eine Azure Compute Gallery-Instanz auf Grundlage von Erstellen eines Images und Verteilen des Images an eine Azure Compute Gallery-Instanz erstellt haben, haben Sie bereits einige der benötigten Variablen erstellt.

  1. Wenn Sie die Variablen noch nicht erstellt haben, führen Sie die folgenden Befehle aus:

    # 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. Erstellen Sie eine Variable für Ihre Abonnement-ID:

    subscriptionID=$(az account show --query id --output tsv)
    
  3. Rufen Sie die Imageversion ab, die Sie aktualisieren möchten:

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

Erstellen einer vom Benutzer zugewiesene Identität und Festlegen von Berechtigungen für die Ressourcengruppe

Sie haben die Benutzeridentität bereits in einem früheren Beispiel eingerichtet. Jetzt müssen Sie die Ressourcen-ID ermitteln, die an die Vorlage angefügt wird.

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

Wenn Sie bereits über eine Azure Compute Gallery-Instanz verfügen, diese aber nicht anhand eines früheren Beispiels eingerichtet haben, müssen Sie VM Image Builder Berechtigungen für den Zugriff auf die Ressourcengruppe zuweisen, damit der Zugriff auf den Katalog möglich ist. Weitere Informationen finden Sie unter Erstellen eines Images und Verteilen des Images an eine Azure Compute Gallery-Instanz.

Ändern des Beispiels helloImage

Sie können das JSON-Beispiel prüfen, das Sie für helloImageTemplateforSIGfromSIG.json verwenden möchten. Informationen zur JSON-Datei finden Sie unter Erstellen einer Azure VM Image Builder-Vorlage.

  1. Laden Sie das JSON-Beispiel entsprechend der Anleitung unter Erstellen eines Linux-Images und Verteilen des Images auf die Azure Compute Gallery mithilfe der Azure CLI herunter.

  2. Konfigurieren Sie den JSON-Code mit Ihren Variablen:

    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
    

Erstellen des Images

  1. Senden Sie die Imagekonfiguration an den VM-Image Builder-Dienst.

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

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

Warten Sie, bis das Image erstellt und repliziert wurde, ehe Sie zum nächsten Schritt übergehen.

Erstellen des virtuellen Computers

  1. Erstellen Sie den virtuellen Computer über die folgenden Schritte:

    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. Stellen Sie eine SSH-Verbindung (Secure Shell) mit der VM unter Verwendung ihrer öffentlichen IP-Adresse her.

    ssh azureuser@<pubIp>
    

    Sobald die SSH-Verbindung hergestellt wurde, sollten Sie eine „Nachricht des Tages“ erhalten, dass das Image angepasst wurde.

    *******************************************************
    **            This VM was built from the:            **
    **      !! AZURE VM IMAGE BUILDER Custom Image !!    **
    **         You have just been Customized :-)         **
    *******************************************************
    
  3. Geben Sie exit ein, um die SSH-Verbindung zu schließen.

  4. Um die Imageversionen aufzulisten, die jetzt in Ihrem Katalog verfügbar sind, führen Sie Folgendes aus:

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

Nächste Schritte

Weitere Informationen zu den Komponenten der JSON-Datei, die Sie in diesem Artikel verwendet haben, finden Sie unter Erstellen einer Azure VM Image Builder-Vorlage.