Aktivieren der automatischen Imageerstellung mit Azure Image Builder-Triggern
Sie können Trigger in Azure Image Builder (AIB) zum Aktivieren der automatischen Imageerstellung verwenden, wenn bestimmte Kriterien in einer Buildpipeline erfüllt werden.
Wichtig
Bitte beachten Sie, dass es eine Einschränkung für die Anzahl der pro Region zulässigen Trigger gibt, insbesondere 100 pro Region und Abonnement.
Hinweis
Derzeit unterstützen wir nur das Festlegen eines Triggers für ein neues Quellimage, aber wir erwarten, dass in Zukunft verschiedene Arten von Triggern unterstützt werden.
Hinweis
Um unnötige Buildfehler zu vermeiden, wird die automatische Bilderstellung über Trigger deaktiviert, wenn der Imagevorlagenbuild mehrmals fehlgeschlagen ist (entweder manuell oder automatisch ausgelöst). Sie können die Imagevorlage weiterhin manuell erstellen, und sobald ein manueller Build erfolgreich ist, werden die automatischen Trigger erneut aktiviert.
Voraussetzungen
Stellen Sie vor dem Einrichten des ersten Triggers sicher, dass Sie die Azure Image Builder-API-Version 01.07.2022 verwenden.
Einrichten eines Triggers in Azure Image Builder
Registrieren Sie die Anbieter
Um VM Image Builder mit Trigger zu verwenden, müssen Sie die unten aufgeführten Anbieter registrieren. Überprüfen Sie Ihre Registrierung, indem Sie die folgenden Befehle ausführen:
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
Wenn die Ausgabe nicht registriert lautet, führen Sie die folgenden Befehle aus:
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
Registrieren Sie das Auto Image Build Trigger-Feature:
az feature register --namespace Microsoft.VirtualMachineImages --name Triggers
Festlegen von Variablen
Zunächst müssen Sie einige Variablen festlegen, die Sie wiederholt in Befehlen verwenden.
# 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)
Ressourcengruppe erstellen
Nun müssen Sie eine Ressourcengruppe erstellen, in der Sie Ihre Imagevorlage speichern können. Verwenden Sie den folgenden Befehl, um Ihre Ressourcengruppe zu erstellen:
az group create -n $resourceGroupName -l $location
Erstellen einer verwalteten Identität für den Dienst
Außerdem müssen Sie eine verwaltete Identität erstellen, die für die Imagevorlage (und möglicherweise die Azure Image Builder-Build-VM) verwendet wird. In diesem Beispiel erstellen wir eine verwaltete Identität mit Mitwirkendem-Zugriff. Sie können jedoch die Berechtigungen oder die Rolle, die der verwalteten Identität zugewiesen sind, nach Ihren Wünschen verfeinern, solange Sie die Berechtigungen einschließen, die für die ordnungsgemäße Funktion des Azure Image Builder-Diensts erforderlich sind.
Weitere Informationen zu den Berechtigungen, die für den Azure Image Builder-Dienst erforderlich sind, finden Sie in der folgenden Dokumentation: Konfigurieren von Azure VM Image Builder-Berechtigungen mithilfe der Azure CLI
Weitere Informationen dazu, wie verwaltete Identitäten in Azure Image Builder zugewiesen und verwendet werden können, finden Sie in der folgenden Dokumentation: VM Image Builder-Vorlagenreferenz: Identität
Verwenden Sie den folgenden Befehl, um die verwaltete Identität zu erstellen, die für die Bildvorlage verwendet wird:
# 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
Erstellen einer Katalog- und Imagedefinition
Zum Verwenden von VM Image Builder mit Azure Compute Gallery benötigen Sie einen vorhandenen Katalog und eine Imagedefinition. Der Katalog und die Imagedefinition werden nicht von VM Image Builder für Sie erstellt.
Wenn Sie noch nicht über einen zu verwendenden Katalog und eine Imagedefinition verfügen, erstellen Sie diese zunächst.
Erstellen Sie zunächst einen Katalog:
az sig create \
-g $resourceGroupName \
--gallery-name $acgName
Erstellen Sie anschließend eine Imagedefinition:
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
Erstellen der Bildvorlage
Laden Sie die JSON-Vorschauvorlage herunter, und konfigurieren Sie diese mit Ihren Variablen. Die folgende Imagevorlage verwendet ein Plattformimage als Quelle. Sie können die Quelle jedoch in ein Azure Compute Gallery-Image ändern, wenn Sie automatische Imageerstellung aktivieren möchten, sobald eine neue Imageversion in Ihrer Azure Compute Gallery vorhanden ist.
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
Anforderungen an Bildvorlagen:
- Das
source
muss entweder ein Plattformimage oder ein Azure Compute Gallery-Image sein (nur diese beiden Quellen sind derzeit zulässig) - Wenn Sie ein Plattformimage verwenden, muss die Version in der Quelle
Latest
lauten. Für ein Azure Compute Gallery-Image muss der letzte Teil der Ressourcen-ID mit dem Versionsnamen aufLatest
festgelegt werden. - Sie können keine Version angeben, wenn Sie das Image an eine Azure Compute Gallery verteilen. Die Version wird automatisch erhöht.
- Wenn die Quelle auf ein Azure Compute Gallery-Image festgelegt ist und die Verteilung auf eine Azure Compute Gallery festgelegt ist, dürfen das Quellkatalogimage und das Image des Verteilungskatalogs nicht identisch sein. Die Imagedefinitions-ID des Azure Compute Gallery darf für das Quellkatalogimage und für das Verteilungskatalogimage nicht identisch sein.
- Die Bildvorlage sollte "Erfolgreich" in
provisioningState
aufweisen, was bedeutet, dass die Vorlage ohne Probleme erstellt wurde. Wenn die Vorlage nicht erfolgreich bereitgestellt wurde, können Sie keinen Trigger erstellen.
Nachdem Sie Ihre Vorlage konfiguriert haben, verwenden Sie den folgenden Befehl, um die Imagekonfiguration an den Azure Image Builder-Dienst zu übermitteln:
az image builder create -g $resourceGroupName -n $imageTemplateName --image-template helloImageTemplateforTriggers.json
Mit dem folgenden Befehl können Sie überprüfen, ob die Imagevorlage erfolgreich erstellt wurde:
az image builder show --name $imageTemplateName --resource-group $resourceGroupName
Hinweis
Wenn Sie den Befehl über provisioningState
ausführen, sollte "Erfolgreich" angezeigt werden, was bedeutet, dass die Vorlage ohne Probleme erstellt wurde. Wenn der provisioningState
nicht als "Erfolgreich" angezeigt wird, können Sie keinen Trigger dazu veranlassen, die Bildvorlage zu verwenden.
Erstellen eines Quelltriggers
Laden Sie die Trigger-Vorschauvorlage herunter, und konfigurieren Sie diese mit Ihren Variablen. Der folgende Trigger startet einen neuen Imagebuild, wenn das Quellimage aktualisiert wird.
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
Triggeranforderungen:
- Der Speicherort im Trigger muss mit dem Speicherort in der Bildvorlage identisch sein. Dies ist eine Anforderung des
az resource create
Cmdlets. - Wir unterstützen derzeit einen
kind
der Trigger, bei dem es sich um ein "SourceImage" handelt - Wir unterstützen nur einen "SourceImage"-Trigger pro Bild. Wenn Sie bereits über einen "SourceImage"-Trigger für das Image verfügen, können Sie keinen neuen Trigger erstellen.
- Sie können das
kind
Feld nicht auf einen anderen Triggertyp aktualisieren. Sie müssen den Trigger löschen und neu erstellen oder einen anderen Trigger mit der entsprechenden Konfiguration erstellen.
Verwenden Sie den folgenden Befehl, um den Trigger Ihrer Ressourcengruppe hinzuzufügen.
az image builder trigger create --name $ibTriggerName --resource-group $resourceGroupName --image-template-name $imageTemplateName --kind SourceImage
Sie können auch den folgenden Befehl verwenden, um zu überprüfen, ob der Trigger erfolgreich erstellt wurde:
az image builder trigger show --name $ibTriggerName --image-template-name $imageTemplateName --resource-group $resourceGroupName
Hinweis
Wenn Sie den Befehl über provisioningState
ausführen, sollte Succeeded
angezeigt werden, was bedeutet, dass die Vorlage ohne Probleme erstellt wurde. In status
sollte der Code Healthy
anzeigen, und die Nachricht sollte Trigger is active.
anzeigen
Bereinigen von Ressourcen
Löschen des Triggers
Verwenden Sie zum Löschen der Website den folgenden Befehl:
az image builder trigger delete --name $ibTriggerName --image-template-name $imageTemplateName --resource-group $resourceGroupName
Löschen der Bildvorlage
Verwenden Sie den folgenden Befehl, um die Bildvorlage zu löschen:
az image builder delete --name $imageTemplateName --resource-group $resourceGroupName
Nächste Schritte
Weitere Informationen finden Sie in der Image Builder-Vorlagenreferenz.