Udostępnij za pośrednictwem


Tworzenie nowego obrazu maszyny wirtualnej z systemem Windows na podstawie istniejącego obrazu przy użyciu narzędzia Azure VM Image Builder

Dotyczy: ✔️ maszyny wirtualne z systemem Windows

Z tego artykułu dowiesz się, jak zaktualizować istniejącą wersję obrazu systemu Windows 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, helloImageTemplateforSIGfromWinSIG.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.

Uwaga

Konstruktor obrazów maszyny wirtualnej obsługuje tworzenie obrazów niestandardowych tylko w tej samej grupie zasobów, w których znajduje się obraz zarządzany przez źródło. W poniższym przykładzie zaktualizuj nazwę grupy zasobów ibsigRG przy użyciu nazwy grupy zasobów, w których znajduje się obraz zarządzany przez źródło.

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

    # 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. 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 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 tożsamości przypisanej przez użytkownika i ustaw uprawnienia dla grupy zasobów.

  2. Skonfiguruj kod JSON przy użyciu zmiennych:

    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
    

Tworzenie obrazu

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

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

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

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

Tworzenie maszyny wirtualnej

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

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

Weryfikowanie dostosowania

Utwórz połączenie pulpitu zdalnego z maszyną wirtualną przy użyciu nazwy użytkownika i hasła ustawionego podczas tworzenia maszyny wirtualnej. Na maszynie wirtualnej otwórz okno wiersza polecenia, a następnie uruchom polecenie:

dir c:\

Powinny zostać wyświetlone dwa katalogi:

  • buildActions: utworzono w pierwszej wersji obrazu.
  • buildActions2: utworzona podczas aktualizowania pierwszej wersji obrazu w celu utworzenia drugiej wersji obrazu.

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.