Jak používat triggery Azure Image Builderu k nastavení automatického sestavení image

Triggery v Azure Image Builderu (AIB) můžete použít k nastavení automatických sestavení imagí, pokud jsou v kanálu buildu splněna určitá kritéria.

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ů.

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

Nastavení proměnných

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

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 nastavit automatické sestavení imagí image, můžete zdroj změnit na image Galerie výpočetních prostředků Azure, pokud chcete nastavit automatické sestavení 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 Latestverze 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 na Latesthodnotu .
  • 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 statuskó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.