Freigeben über


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

Gilt für: ✔️ Windows-VMs

In diesem Artikel erfahren Sie, wie Sie eine vorhandene Windows-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 helloImageTemplateforSIGfromWinSIG.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.

Hinweis

VM Image Builder unterstützt das Erstellen benutzerdefinierter Images nur in derselben Ressourcengruppe, in der sich auch das von der Quelle verwaltete Image befindet. Ändern Sie im folgenden Beispiel den Namen der Ressourcengruppe ibsigRG in den der Ressourcengruppe, in der sich Ihr von der Quelle verwaltetes Image befindet.

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

    # 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"
    
  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 herunter, wie unter Erstellen einer benutzerseitig zugewiesenen Identität und Festlegen von Berechtigungen für die Ressourcengruppe gezeigt.

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

    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
    

Erstellen des Images

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

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

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

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

Erstellen des virtuellen Computers

Erstellen Sie den virtuellen Computer über die folgenden Schritte:

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

Überprüfen der Anpassung

Stellen Sie eine Remotedesktopverbindung mit der VM mit dem Benutzernamen samt Kennwort her, den Sie beim Erstellen der VM festgelegt haben. Öffnen Sie in der VM ein Eingabeaufforderungsfenster, und führen Sie dann Folgendes aus:

dir c:\

Sie sollten nun zwei Verzeichnisse sehen:

  • buildActions: in der ersten Imageversion erstellt.
  • buildActions2: erstellt, als Sie die erste Imageversion aktualisiert haben, um die zweite Imageversion zu erstellen.

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.