Så här aktiverar du automatisk skapande av avbildning med Azure Image Builder-utlösare
Du kan använda utlösare i Azure Image Builder (AIB) för att aktivera automatisk skapande av avbildningar när vissa kriterier uppfylls i bygg-pipelinen.
Viktigt!
Observera att det finns en begränsning för antalet utlösare som kan tillåtas per region, särskilt 100 per region per prenumeration.
Kommentar
För närvarande har vi bara stöd för att ange en utlösare för en ny källbild, men vi förväntar oss att stödja olika typer av utlösare i framtiden.
Kommentar
För att förhindra onödiga byggfel inaktiveras automatiskt skapande av avbildning via utlösare om avbildningsmallens version har misslyckats flera gånger i följd (antingen manuellt eller automatiskt utlöst). Du kan fortfarande skapa avbildningsmallen manuellt, och när en manuell version lyckas återaktiveras de automatiska utlösarna.
Förutsättningar
Innan du konfigurerar din första utlösare kontrollerar du att du använder Azure Image Builder API version 2022-07-01.
Så här konfigurerar du en utlösare i Azure Image Builder
Registrera leverantörerna
Om du vill använda VM Image Builder med utlösare måste du registrera leverantörerna nedan. Kontrollera registreringen genom att köra följande kommandon:
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
Om utdata inte säger registrerade kör du följande kommandon:
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
Registrera funktionen för utlösare för automatisk avbildningsversion:
az feature register --namespace Microsoft.VirtualMachineImages --name Triggers
Ange variabler
Först måste du ange några variabler som du upprepade gånger ska använda i kommandon.
# 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)
Skapa resursgrupp
Nu måste du skapa en resursgrupp där du kan lagra avbildningsmallen. Använd följande kommando för att skapa din resursgrupp:
az group create -n $resourceGroupName -l $location
Skapa en hanterad identitet för tjänsten
Du måste också skapa en hanterad identitet som ska användas för avbildningsmallen (och eventuellt den virtuella Azure Image Builder-versionen). I det här exemplet skapar vi en hanterad identitet med åtkomsten "Deltagare", men du kan förfina behörigheterna eller rollen som tilldelats till den hanterade identiteten så länge du inkluderar de behörigheter som krävs för att Azure Image Builder-tjänsten ska fungera korrekt.
Mer information om de behörigheter som krävs för Azure Image Builder-tjänsten finns i följande dokumentation: Konfigurera Azure VM Image Builder-behörigheter med hjälp av Azure CLI
Mer information om hur hanterade identiteter kan tilldelas och användas i Azure Image Builder finns i följande dokumentation: Mallreferens för VM Image Builder: Identitet
Använd följande kommando för att skapa den hanterade identitet som ska användas för avbildningsmallen:
# 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
Skapa galleri- och bilddefinition
Om du vill använda VM Image Builder med Azure Compute Gallery måste du ha ett befintligt galleri och en bilddefinition. Vm Image Builder skapar inte galleriet och avbildningsdefinitionen åt dig.
Om du inte redan har ett galleri och en bilddefinition att använda börjar du med att skapa dem.
Skapa först ett galleri:
az sig create \
-g $resourceGroupName \
--gallery-name $acgName
Skapa sedan en bilddefinition:
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
Skapa avbildningsmallen
Ladda ned JSON-exempelmallen och konfigurera den med dina variabler. Följande bildmall använder en plattformsbild som källa, men du kan ändra källan till en Azure Compute Gallery-avbildning om du vill aktivera automatisk bildskapande när det finns en ny avbildningsversion i Azure Compute Gallery.
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
Krav för bildmall:
source
Måste vara antingen en plattformsbild eller En Azure Compute Gallery-avbildning (endast dessa två källor tillåts för närvarande)- Om du använder en plattformsbild måste versionen i källan vara
Latest
. För en Azure Compute Gallery-avbildning måste den sista delen av resurs-ID:t som har versionsnamnet anges tillLatest
. - Du kan inte ange en version om du distribuerar avbildningen till ett Azure Compute-galleri. Versionen ökas automatiskt.
- När källan är inställd på en Azure Compute Gallery-avbildning och distribution är inställd på ett Azure Compute-galleri, kan källgalleribilden och distributionsgalleribilden inte vara samma. Bilddefinitions-ID för Azure Compute Gallery kan inte vara detsamma för både källgalleribilden och distributionsgalleribilden.
- Avbildningsmallen ska ha "Lyckades" i
provisioningState
, vilket innebär att mallen skapades utan problem. Om mallen inte har etablerats kan du inte skapa någon utlösare.
När du har konfigurerat mallen använder du följande kommando för att skicka avbildningskonfigurationen till Azure Image Builder-tjänsten:
az image builder create -g $resourceGroupName -n $imageTemplateName --image-template helloImageTemplateforTriggers.json
Du kan använda följande kommando för att kontrollera att avbildningsmallen har skapats:
az image builder show --name $imageTemplateName --resource-group $resourceGroupName
Kommentar
När du kör kommandot ovan provisioningState
ska du säga "Lyckades", vilket innebär att mallen skapades utan problem. provisioningState
Om inte säga lyckades, kommer du inte att kunna göra en utlösare använda avbildningsmallen.
Skapa källutlösare
Ladda ned exempelutlösarmallen och konfigurera den med dina variabler. Följande utlösare startar en ny avbildningsversion när källbilden uppdateras.
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
Krav för utlösare:
- Platsen i utlösaren måste vara samma som platsen i bildmallen. Detta är ett krav för cmdleten
az resource create
. - Vi stöder för närvarande en
kind
utlösare, som är en "SourceImage" - Vi stöder bara en "SourceImage"-utlösare per bild. Om du redan har en "SourceImage"-utlösare på avbildningen kan du inte skapa en ny.
- Du kan inte uppdatera fältet
kind
till en annan typ av utlösare. Du måste ta bort utlösaren och återskapa den eller skapa en annan utlösare med rätt konfiguration.
Använd följande kommando för att lägga till utlösaren i resursgruppen.
az image builder trigger create --name $ibTriggerName --resource-group $resourceGroupName --image-template-name $imageTemplateName --kind SourceImage
Du kan också använda följande kommando för att kontrollera att utlösaren har skapats:
az image builder trigger show --name $ibTriggerName --image-template-name $imageTemplateName --resource-group $resourceGroupName
Kommentar
När du kör kommandot ovanför provisioningState
ska säga Succeeded
, vilket innebär att utlösaren skapades utan problem. I status
ska koden säga Healthy
och meddelandet ska säga Trigger is active.
Rensa dina resurser
Ta bort utlösaren
Använd följande kommando för att ta bort utlösaren:
az image builder trigger delete --name $ibTriggerName --image-template-name $imageTemplateName --resource-group $resourceGroupName
Ta bort avbildningsmallen
Använd följande kommando för att ta bort avbildningsmallen:
az image builder delete --name $imageTemplateName --resource-group $resourceGroupName