Vytvoření image Linuxu a její distribuce do Galerie výpočetních prostředků Azure pomocí Azure CLI
Platí pro: ✔️ Flexibilní škálovací sady virtuálních počítačů s Linuxem ✔️
V tomto článku se dozvíte, jak pomocí Azure VM Image Builderu a Azure CLI vytvořit verzi image v Galerii výpočetních prostředků Azure (dříve Sdílená galerie imagí) a pak ji globálně distribuovat. Verzi image můžete vytvořit také pomocí Azure PowerShellu.
Tento článek používá ukázkovou šablonu JSON ke konfiguraci image. Soubor JSON je na helloImageTemplateforSIG.json.
Pokud chcete distribuovat image do galerie služby Azure Compute, šablona jako hodnotu oddílu distribute
šablony používá sharedImage.
Registrace poskytovatelů
Pokud chcete použít Nástroj Image Builder virtuálního počítače, musíte poskytovatele zaregistrovat. Zkontrolujte registraci spuštěním následujících příkazů:
az provider show -n Microsoft.VirtualMachineImages -o json | grep registrationState
az provider show -n Microsoft.KeyVault -o json | grep registrationState
az provider show -n Microsoft.Compute -o json | grep registrationState
az provider show -n Microsoft.Storage -o json | grep registrationState
az provider show -n Microsoft.Network -o json | grep registrationState
az provider show -n Microsoft.ContainerInstance -o json | grep registrationState
Pokud výstup neřekne zaregistrovaný, spusťte následující příkazy:
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
Nastavení proměnných a oprávnění
Protože budete opakovaně používat některé části informací, vytvořte některé proměnné pro uložení těchto informací.
Image Builder virtuálního počítače podporuje vytváření vlastních imagí pouze ve stejné skupině prostředků jako zdrojová image spravovaná zdrojem. V následujícím příkladu aktualizujte název skupiny prostředků tak, aby byl stejná jako vaše zdrojová image.
# Resource group name - ibLinuxGalleryRG in this example
sigResourceGroup=ibLinuxGalleryRG
# Datacenter location - West US 2 in this example
location=westus2
# Additional region to replicate the image to - East US in this example
additionalregion=eastus
# Name of the Azure Compute Gallery - myGallery in this example
sigName=myIbGallery
# Name of the image definition to be created - myImageDef in this example
imageDefName=myIbImageDef
# Reference name in the image distribution metadata
runOutputName=aibLinuxSIG
Vytvořte proměnnou pro ID předplatného:
subscriptionID=$(az account show --query id --output tsv)
Vytvořte skupinu prostředků:
az group create -n $sigResourceGroup -l $location
Vytvoření identity přiřazené uživatelem a nastavení oprávnění pro skupinu prostředků
Image Builder virtuálního počítače používá zadanou identitu uživatele k vložení image do Galerie výpočetních prostředků Azure. V tomto příkladu vytvoříte definici role Azure s konkrétními akcemi pro distribuci image. Definice role se pak přiřadí identitě uživatele.
# Create user-assigned identity for VM Image Builder to access the storage account where the script is stored
identityName=aibBuiUserId$(date +'%s')
az identity create -g $sigResourceGroup -n $identityName
# Get the identity ID
imgBuilderCliId=$(az identity show -g $sigResourceGroup -n $identityName --query clientId -o tsv)
# Get the user identity URI that's needed for the template
imgBuilderId=/subscriptions/$subscriptionID/resourcegroups/$sigResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$identityName
# Download an Azure role-definition template, and update the template with the parameters that were specified earlier
curl https://raw.githubusercontent.com/Azure/azvmimagebuilder/master/solutions/12_Creating_AIB_Security_Roles/aibRoleImageCreation.json -o aibRoleImageCreation.json
imageRoleDefName="Azure Image Builder Image Def"$(date +'%s')
# Update the definition
sed -i -e "s/<subscriptionID>/$subscriptionID/g" aibRoleImageCreation.json
sed -i -e "s/<rgName>/$sigResourceGroup/g" aibRoleImageCreation.json
sed -i -e "s/Azure Image Builder Service Image Creation Role/$imageRoleDefName/g" aibRoleImageCreation.json
# Create role definitions
az role definition create --role-definition ./aibRoleImageCreation.json
# Grant a role definition to the user-assigned identity
az role assignment create \
--assignee $imgBuilderCliId \
--role "$imageRoleDefName" \
--scope /subscriptions/$subscriptionID/resourceGroups/$sigResourceGroup
Vytvoření definice a galerie obrázků
Pokud chcete použít Tvůrce imagí virtuálních počítačů s galerií Azure Compute, musíte mít existující galerii a definici image. VM Image Builder za vás nevytvoří galerii a definici image.
Pokud ještě nemáte k dispozici galerii a definici obrázku, začněte jejich vytvořením.
Nejprve vytvořte galerii:
az sig create \
-g $sigResourceGroup \
--gallery-name $sigName
Pak vytvořte definici image:
az sig image-definition create \
-g $sigResourceGroup \
--gallery-name $sigName \
--gallery-image-definition $imageDefName \
--publisher myIbPublisher \
--offer myOffer \
--sku 20_04-lts-gen2 \
--os-type Linux \
--hyper-v-generation V2 \
--features SecurityType=TrustedLaunchSupported
Stažení a konfigurace souboru JSON
Stáhněte si šablonu JSON a nakonfigurujte ji s vašimi proměnnými:
curl https://raw.githubusercontent.com/Azure/azvmimagebuilder/master/quickquickstarts/1_Creating_a_Custom_Linux_Shared_Image_Gallery_Image/helloImageTemplateforSIG.json -o helloImageTemplateforSIG.json
sed -i -e "s/<subscriptionID>/$subscriptionID/g" helloImageTemplateforSIG.json
sed -i -e "s/<rgName>/$sigResourceGroup/g" helloImageTemplateforSIG.json
sed -i -e "s/<imageDefName>/$imageDefName/g" helloImageTemplateforSIG.json
sed -i -e "s/<sharedImageGalName>/$sigName/g" helloImageTemplateforSIG.json
sed -i -e "s/<region1>/$location/g" helloImageTemplateforSIG.json
sed -i -e "s/<region2>/$additionalregion/g" helloImageTemplateforSIG.json
sed -i -e "s/<runOutputName>/$runOutputName/g" helloImageTemplateforSIG.json
sed -i -e "s%<imgBuilderId>%$imgBuilderId%g" helloImageTemplateforSIG.json
Vytvoření verze image
V této části vytvoříte verzi image v galerii.
Odešlete konfiguraci image do služby Azure VM Image Builder:
az resource create \
--resource-group $sigResourceGroup \
--properties @helloImageTemplateforSIG.json \
--is-full-object \
--resource-type Microsoft.VirtualMachineImages/imageTemplates \
-n helloImageTemplateforSIG01
Spusťte sestavení image:
az resource invoke-action \
--resource-group $sigResourceGroup \
--resource-type Microsoft.VirtualMachineImages/imageTemplates \
-n helloImageTemplateforSIG01 \
--action Run
Vytvoření image a jeho replikace do obou oblastí může chvíli trvat. Než přejdete k vytvoření virtuálního počítače, počkejte, až se tato část dokončí.
Vytvoření virtuálního počítače
Vytvořte virtuální počítač z verze image vytvořené nástrojem VM Image Builder.
az vm create \
--resource-group $sigResourceGroup \
--name myAibGalleryVM \
--admin-username aibuser \
--location $location \
--image "/subscriptions/$subscriptionID/resourceGroups/$sigResourceGroup/providers/Microsoft.Compute/galleries/$sigName/images/$imageDefName/versions/latest" \
--security-type TrustedLaunch \
--generate-ssh-keys
Připojte se k virtuálnímu počítači přes Secure Shell (SSH):
ssh aibuser@<publicIpAddress>
Jakmile se naváže připojení SSH, měli byste vidět, že image byla přizpůsobena zprávou dne:
*******************************************************
** This VM was built from the: **
** !! AZURE VM IMAGE BUILDER Custom Image !! **
** You have just been Customized :-) **
*******************************************************
Vyčištění prostředků
Poznámka:
Pokud se teď chcete pokusit znovu použít verzi image a vytvořit novou verzi stejné image, přeskočte zde uvedený krok a přejděte k vytvoření jiné verze image pomocí Nástroje image virtuálního počítače.
Pokud už nepotřebujete prostředky vytvořené podle postupu v tomto článku, můžete je odstranit pomocí následujícího postupu.
Tento proces odstraní image, kterou jste vytvořili, i všechny ostatní soubory prostředků. Před odstraněním prostředků se ujistěte, že jste dokončili toto nasazení.
Když odstraňujete prostředky galerie, musíte před odstraněním definice obrázku, která byla použita k jejich vytvoření, odstranit všechny verze imagí. Pokud chcete odstranit galerii, musíte nejprve odstranit všechny definice obrázků v galerii.
Odstraňte šablonu Image Builderu virtuálního počítače.
az resource delete \ --resource-group $sigResourceGroup \ --resource-type Microsoft.VirtualMachineImages/imageTemplates \ -n helloImageTemplateforSIG01
Odstraňte přiřazení oprávnění, role a identitu.
az role assignment delete \ --assignee $imgBuilderCliId \ --role "$imageRoleDefName" \ --scope /subscriptions/$subscriptionID/resourceGroups/$sigResourceGroup az role definition delete --name "$imageRoleDefName" az identity delete --ids $imgBuilderId
Získejte verzi image vytvořenou nástrojem VM Image Builder (vždy začíná
0.
) a odstraňte ji.sigDefImgVersion=$(az sig image-version list \ -g $sigResourceGroup \ --gallery-name $sigName \ --gallery-image-definition $imageDefName \ --subscription $subscriptionID --query [].'name' -o json | grep 0. | tr -d '"') az sig image-version delete \ -g $sigResourceGroup \ --gallery-image-version $sigDefImgVersion \ --gallery-name $sigName \ --gallery-image-definition $imageDefName \ --subscription $subscriptionID
Odstraňte definici obrázku.
az sig image-definition delete \ -g $sigResourceGroup \ --gallery-name $sigName \ --gallery-image-definition $imageDefName \ --subscription $subscriptionID
Odstraňte galerii.
az sig delete -r $sigName -g $sigResourceGroup
Odstraňte skupinu prostředků.
az group delete -n $sigResourceGroup -y
Další kroky
Přečtěte si další informace o Galerii výpočetních prostředků Azure.