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.
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
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.
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
Utwórz zmienną dla identyfikatora subskrypcji:
subscriptionID=$(az account show --query id --output tsv)
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.
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.
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
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
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
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
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 :-) ** *******************************************************
Wpisz
exit
, aby zamknąć połączenie SSH.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.