Povolení automatického vytváření imagí pomocí triggerů Azure Image Builderu
Triggery v Azure Image Builderu (AIB) můžete použít k povolení automatického vytváření imagí při splnění určitých kritérií v kanálu buildu.
Důležité
Informujte se prosím, že existuje omezení počtu aktivačních událostí, které je možné povolit pro každou oblast, konkrétně 100 na oblast na předplatné.
Poznámka:
V současné době podporujeme pouze nastavení triggeru pro novou zdrojovou image, ale očekáváme, že v budoucnu budeme podporovat různé druhy triggerů.
Poznámka:
Aby se zabránilo zbytečným selháním sestavení, automatické vytváření imagí prostřednictvím triggerů se deaktivuje, pokud sestavení šablony image selhalo několikrát po sobě (buď ručně, nebo automaticky aktivované). Šablonu image můžete přesto sestavit ručně a jakmile bude ruční sestavení úspěšné, automatické triggery se znovu aktivují.
Požadavky
Před nastavením prvního triggeru se ujistěte, že používáte rozhraní API Azure Image Builderu verze 2022-07-01.
Jak nastavit trigger v Azure Image Builderu
Registrace poskytovatelů
Pokud chcete používat Tvůrce imagí virtuálních počítačů s triggery, musíte zaregistrovat následující 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
Zaregistrujte funkci triggerů automatického sestavení image:
az feature register --namespace Microsoft.VirtualMachineImages --name Triggers
Nastavit proměnné
Nejprve musíte nastavit některé proměnné, které budete opakovaně používat v příkazech.
# Resource group name - ibTriggersTestRG in this example
resourceGroupName=ibTriggersRG
# Datacenter location - West US 2 in this example
location=westus2
# Additional region to replicate the image to - East US in this example
additionalregion=eastus2
# Name of the Azure Compute Gallery - ibTriggersGallery in this example
acgName=ibTriggersGallery
# Name of the image definition to be created - ibTriggersImageDef in this example
imageDefName=ibTriggersImageDef
# Name of the Trigger to be created - ibTrigger in this example
ibTriggerName=ibTrigger
# Name of the image template to be created - ibTriggersImageTemplate in this example
imageTemplateName=ibTriggersImageTemplate
# Reference name in the image distribution metadata
runOutputName=ibTriggersTestRun
# Create a variable for your subscription ID
subscriptionID=$(az account show --query id --output tsv)
Vytvořit skupinu zdrojů
Teď potřebujete vytvořit skupinu prostředků, do které můžete uložit šablonu obrázku. Pomocí následujícího příkazu vytvořte skupinu prostředků:
az group create -n $resourceGroupName -l $location
Vytvoření spravované identity pro službu
Budete také muset vytvořit spravovanou identitu, která se použije pro šablonu image (a potenciálně virtuální počítač sestavení Azure Image Builderu). V tomto příkladu vytvoříme spravovanou identitu s přístupem přispěvatele, ale oprávnění nebo roli přiřazenou spravované identitě můžete upřesnit tak dlouho, dokud zahrnete oprávnění potřebná k tomu, aby služba Azure Image Builder správně fungovala.
Další informace o oprávněních potřebných pro službu Azure Image Builder najdete v následující dokumentaci: Konfigurace oprávnění Azure VM Image Builderu pomocí Azure CLI
Další informace o tom, jak je možné přiřadit a použít spravované identity v Azure Image Builderu, najdete v následující dokumentaci: Referenční informace k šablonám Image Builderu virtuálního počítače: Identita
Pomocí následujícího příkazu vytvořte spravovanou identitu, která se použije pro šablonu image:
# 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 $resourceGroupName -n $identityName
# Get the identity client and principal ID
imgBuilderCliId=$(az identity show -g $resourceGroupName -n $identityName --query clientId -o tsv)
# Get the user identity URI that's needed for the template
imgBuilderId=/subscriptions/$subscriptionID/resourcegroups/$resourceGroupName/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$identityName
# Grant "Contributor" access to the user-assigned identity
az role assignment create \
--assignee $imgBuilderCliId \
--role "Contributor" \
--scope /subscriptions/$subscriptionID/resourceGroups/$resourceGroupName
Vytvoření definice galerie a obrázku
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 $resourceGroupName \
--gallery-name $acgName
Pak vytvořte definici image:
az sig image-definition create \
-g $resourceGroupName \
--gallery-name $acgName \
--gallery-image-definition $imageDefName \
--publisher myIbPublisher \
--offer myOffer \
--sku 18.04-LTS \
--os-type Linux
Vytvoření šablony obrázku
Stáhněte si ukázkovou šablonu JSON a nakonfigurujte ji s vašimi proměnnými. Následující šablona image používá jako zdroj image platformy, ale pokud chcete povolit automatické vytváření imagí, můžete zdroj změnit na image Galerie výpočetních prostředků Azure, pokud chcete povolit automatické vytváření imagí, kdykoli je v Galerii výpočetních prostředků Azure nová verze image.
curl https://raw.githubusercontent.com/Azure/azvmimagebuilder/main/quickquickstarts/9_Setting_up_a_Trigger_with_a_Custom_Linux_Image/helloImageTemplate.json -o helloImageTemplateforTriggers.json
sed -i -e "s/<subscriptionID>/$subscriptionID/g" helloImageTemplateforTriggers.json
sed -i -e "s/<rgName>/$resourceGroupName/g" helloImageTemplateforTriggers.json
sed -i -e "s/<imageDefName>/$imageDefName/g" helloImageTemplateforTriggers.json
sed -i -e "s/<acgName>/$acgName/g" helloImageTemplateforTriggers.json
sed -i -e "s/<region1>/$location/g" helloImageTemplateforTriggers.json
sed -i -e "s/<region2>/$additionalregion/g" helloImageTemplateforTriggers.json
sed -i -e "s/<runOutputName>/$runOutputName/g" helloImageTemplateforTriggers.json
sed -i -e "s%<imgBuilderId>%$imgBuilderId%g" helloImageTemplateforTriggers.json
Požadavky na šablonu obrázku:
- Musí
source
to být image platformy nebo image Galerie výpočetních prostředků Azure (v současné době jsou povoleny pouze tyto dva zdroje). - Pokud používáte image platformy, musí být
Latest
verze ve zdroji . Pro image galerie výpočetních prostředků Azure musí být poslední část ID prostředku, která má název verze, nastavena naLatest
hodnotu . - Verzi nemůžete zadat, pokud distribuujete image do galerie výpočetních prostředků Azure. Verze se automaticky zvýší.
- Pokud je zdroj nastavený na image Galerie výpočetních prostředků Azure a distribuuje se do galerie výpočetních prostředků Azure, zdrojová image galerie a image distribuce galerie nemůže být stejná. ID definice image galerie služby Azure Compute nemůže být stejné pro image zdrojové galerie i image distribuce galerie.
- Šablona obrázku by měla obsahovat text "Succeeded" (
provisioningState
Úspěch), což znamená, že šablona byla vytvořena bez jakýchkoli problémů. Pokud šablona není úspěšně zřízená, nebudete moct vytvořit trigger.
Po konfiguraci šablony pomocí následujícího příkazu odešlete konfiguraci image do služby Azure Image Builder:
az image builder create -g $resourceGroupName -n $imageTemplateName --image-template helloImageTemplateforTriggers.json
K ověření úspěšného vytvoření šablony obrázku můžete použít následující příkaz:
az image builder show --name $imageTemplateName --resource-group $resourceGroupName
Poznámka:
Při spuštění příkazu nad příkazem provisioningState
by mělo být uvedeno "Úspěch", což znamená, že šablona byla vytvořena bez jakýchkoli problémů. provisioningState
Pokud se neuskutečí úspěšně, nebudete moct trigger použít šablonu obrázku.
Vytvoření zdrojové aktivační události
Stáhněte si ukázkovou šablonu triggeru a nakonfigurujte ji s vašimi proměnnými. Následující trigger spustí nové sestavení image pokaždé, když se zdrojová image aktualizuje.
curl https://raw.githubusercontent.com/kof-f/azvmimagebuilder/main/quickquickstarts/9_Setting_up_a_Trigger_with_a_Custom_Linux_Image/trigger.json -o trigger.json
sed -i -e "s/<region1>/$location/g" trigger.json
Požadavky na trigger:
- Umístění v triggeru musí být stejné jako umístění v šabloně obrázku. Toto je požadavek rutiny
az resource create
. - V současné době podporujeme jeden z
kind
triggerů, což je SourceImage. - Podporujeme pouze jednu aktivační událost SourceImage pro každou image. Pokud už na imagi máte trigger SourceImage, nemůžete vytvořit nový.
- Pole nemůžete aktualizovat
kind
na jiný typ triggeru. Trigger musíte odstranit a vytvořit ho znovu nebo vytvořit další trigger s příslušnou konfigurací.
Pomocí následujícího příkazu přidejte trigger do skupiny prostředků.
az image builder trigger create --name $ibTriggerName --resource-group $resourceGroupName --image-template-name $imageTemplateName --kind SourceImage
K ověření úspěšného vytvoření triggeru můžete použít také následující příkaz:
az image builder trigger show --name $ibTriggerName --image-template-name $imageTemplateName --resource-group $resourceGroupName
Poznámka:
Při spuštění příkazu nad příkazem provisioningState
by mělo být uvedeno Succeeded
, což znamená, že trigger byl vytvořen bez jakýchkoli problémů. V status
kódu by měl říci Healthy
a zpráva by měla říct Trigger is active.
Vyčištění prostředků
Odstranění triggeru
K odstranění triggeru použijte následující příkaz:
az image builder trigger delete --name $ibTriggerName --image-template-name $imageTemplateName --resource-group $resourceGroupName
Odstranění šablony obrázku
K odstranění šablony obrázku použijte následující příkaz:
az image builder delete --name $imageTemplateName --resource-group $resourceGroupName
Další kroky
Další informace najdete v referenčních informacích k šabloně Image Builderu.