Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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 v helloImageTemplateforSIG.json.
Pokud chcete distribuovat image do galerie služby Azure Compute, šablona jako hodnotu oddílu šablony používá distribute.
Registrace poskytovatelů
Abyste mohli používat VM Image Builder, musíte zaregistrovat poskytovatele. 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 VM podporuje vytváření vlastních obrazů pouze ve stejné skupině prostředků jako spravovaný zdrojový obraz. V následujícím příkladu aktualizujte název skupiny prostředků tak, aby byla stejná jako vaše zdrojově spravovaný obraz.
# 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řte uživatelem přiřazenou identitu a nastavte 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.
Úspěch následujícího příkazu závisí na šíření RBAC, což může v některých případech trvat až přibližně 30 minut. Počkejte asi 5 minut, než příkaz spustíte, a pokud dojde k chybě, zkuste to znovu.
# 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. The success of the following command relies on RBAC propagation, which can take up to ~30 minutes. Wait about 5 minutes before running the command and wait a few more minutes before retrying if you get an error.
az role assignment create \
--assignee $imgBuilderCliId \
--role "$imageRoleDefName" \
--scope /subscriptions/$subscriptionID/resourceGroups/$sigResourceGroup
Vytvoření definice a galerie obrázků
Pokud chcete použít VM Image Builder s Azure Compute Gallery, musíte mít existující galerii a definici obrazu. 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
sed -i -e "s/sudo mkdir/sleep 300;sudo mkdir/g" helloImageTemplateforSIG.json
Vytvořte verzi obrazu
V této části vytvoříte verzi obrázku 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í obrazu:
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 je navázáno připojení SSH, měli byste vidět, že obraz byl přizpůsoben pomocí zprávy dne:
*******************************************************
** This VM was built from the: **
** !! AZURE VM IMAGE BUILDER Custom Image !! **
** You have just been Customized :-) **
*******************************************************
Ukliďte své prostředky
Poznámka:
Pokud se teď chcete pokusit přizpůsobit 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 pro vytváření image virtuálních počítačů.
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í jak obraz, který jste vytvořili, tak všechny ostatní soubory zdrojů. 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 nástroje Image Builder pro virtuální počítače.
az resource delete \ --resource-group $sigResourceGroup \ --resource-type Microsoft.VirtualMachineImages/imageTemplates \ -n helloImageTemplateforSIG01Odstraň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 $imgBuilderIdZí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 $subscriptionIDOdstraňte definici obrázku.
az sig image-definition delete \ -g $sigResourceGroup \ --gallery-name $sigName \ --gallery-image-definition $imageDefName \ --subscription $subscriptionIDOdstraňte galerii.
az sig delete -r $sigName -g $sigResourceGroupOdstraň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.