Tworzenie nowego obrazu maszyny wirtualnej na podstawie istniejącego obrazu przy użyciu narzędzia Azure VM Image Builder w systemie Linux

Dotyczy: ✔️ Maszyny wirtualne z systemem Linux — elastyczne zestawy skalowania ✔️

Z tego artykułu dowiesz się, jak zaktualizować istniejącą wersję obrazu w galerii obliczeń platformy Azure (dawniej Shared Image Gallery) i opublikować ją w galerii jako nową wersję obrazu.

Aby skonfigurować obraz, użyj przykładowego szablonu JSON helloImageTemplateforSIGfromSIG.json.

Rejestrowanie dostawców

Aby użyć narzędzia VM Image Builder, musisz zarejestrować dostawców.

  1. Sprawdź rejestracje dostawcy. Upewnij się, że każdy z nich zwraca wartość Zarejestrowano.

    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. Jeśli nie zostaną zwrócone zarejestrowane, zarejestruj dostawców, uruchamiając następujące polecenia:

    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
    

Ustawianie zmiennych i uprawnień

Jeśli galeria obliczeniowa platformy Azure została już utworzona przy użyciu funkcji Tworzenie obrazu i dystrybuowanie jej do galerii obliczeń platformy Azure, utworzono już niektóre potrzebne zmienne.

  1. Jeśli jeszcze nie utworzono zmiennych, uruchom następujące polecenia:

    # 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. Utwórz zmienną dla identyfikatora subskrypcji:

    subscriptionID=$(az account show --query id --output tsv)
    
  3. Pobierz wersję obrazu, którą chcesz zaktualizować:

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

Tworzenie tożsamości przypisanej przez użytkownika i ustawianie uprawnień w grupie zasobów

Tożsamość użytkownika została skonfigurowana we wcześniejszym przykładzie, więc teraz musisz pobrać identyfikator zasobu, który zostanie dołączony do szablonu.

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

Jeśli masz już galerię obliczeniową platformy Azure, ale nie skonfigurowaliśmy jej, postępując zgodnie z wcześniejszym przykładem, musisz przypisać uprawnienia konstruktora obrazów maszyny wirtualnej, aby uzyskać dostęp do grupy zasobów, aby mógł uzyskać dostęp do galerii. Aby uzyskać więcej informacji, zobacz Create an image and distribute it to an Azure Compute Gallery (Tworzenie obrazu i dystrybuowanie go do galerii obliczeń platformy Azure).

Modyfikowanie przykładu helloImage

Możesz przejrzeć przykład JSON, którego chcesz użyć w pliku helloImageTemplateforSIGfromSIG.json. Aby uzyskać informacje o pliku JSON, zobacz Tworzenie szablonu konstruktora obrazów maszyny wirtualnej platformy Azure.

  1. Pobierz przykład JSON, jak pokazano w sekcji Tworzenie obrazu systemu Linux i rozpowszechnij go w galerii obliczeń platformy Azure przy użyciu interfejsu wiersza polecenia platformy Azure.

  2. Skonfiguruj kod JSON przy użyciu zmiennych:

    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
    

Tworzenie obrazu

  1. Prześlij konfigurację obrazu do usługi konstruktora obrazów maszyny wirtualnej:

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

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

Przed przejściem do następnego kroku poczekaj na skompilowanie i zreplikowanie obrazu.

Tworzenie maszyny wirtualnej

  1. Utwórz maszynę wirtualną, wykonując następujące czynności:

    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. Utwórz połączenie protokołu Secure Shell (SSH) z maszyną wirtualną przy użyciu publicznego adresu IP maszyny wirtualnej.

    ssh azureuser@<pubIp>
    

    Po nawiązaniu połączenia SSH powinien zostać wyświetlony komunikat "Komunikat dnia" z informacją, że obraz został dostosowany:

    *******************************************************
    **            This VM was built from the:            **
    **      !! AZURE VM IMAGE BUILDER Custom Image !!    **
    **         You have just been Customized :-)         **
    *******************************************************
    
  3. Wpisz exit , aby zamknąć połączenie SSH.

  4. Aby wyświetlić listę wersji obrazów, które są teraz dostępne w galerii, uruchom polecenie:

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

Następne kroki

Aby dowiedzieć się więcej na temat składników pliku JSON użytego w tym artykule, zobacz Tworzenie szablonu konstruktora obrazów maszyny wirtualnej platformy Azure.