Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
È possibile usare i trigger in Azure Image Builder (AIB) per abilitare la creazione automatica di immagini quando vengono soddisfatti determinati criteri nella pipeline di compilazione.
Importante
È previsto un limite di 100 trigger per area per sottoscrizione.
Nota
Per evitare errori di compilazione non necessari, la creazione automatica di immagini tramite trigger viene disattivata se la compilazione del modello di immagine ha esito negativo più volte consecutivamente (manualmente o automaticamente attivata). È comunque possibile compilare manualmente il modello di immagine. Una volta completata la compilazione manuale, i trigger automatici vengono riattivati.
Prerequisiti
Prima di configurare il primo trigger, assicurati di usare la versione 2022-07-01 o successiva dell'API Azure Image Builder.
Come configurare un trigger in Image Builder di Azure
Registrare i provider
Per usare VM Image Builder con i trigger, registrare i seguenti provider. Controllare la registrazione eseguendo questi comandi:
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
Se l'output non indica Registrato, eseguire i comandi seguenti:
az provider register -n Microsoft.VirtualMachineImages
az provider register -n Microsoft.KeyVault
az provider register -n Microsoft.Compute
az provider register -n Microsoft.Storage
az provider register -n Microsoft.Network
az provider register -n Microsoft.ContainerInstance
Registra la funzionalità dei trigger di compilazione automatica delle immagini:
az feature register --namespace Microsoft.VirtualMachineImages --name Triggers
Impostare variabili
Prima di tutto, impostare alcune variabili che vengono usate ripetutamente nei comandi.
# Resource group name - ibTriggersTestRG in this example
resourceGroupName=ibTriggersRG
# Datacenter location - Central US in this example
location=centralus
# Additional region to replicate the image to - West US in this example
additionalregion=westus
# 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)
Crea gruppo di risorse
Creare un gruppo di risorse in cui è possibile archiviare il modello di immagine:
az group create -n $resourceGroupName -l $location
Creare un'identità gestita per il servizio
Creare un'identità gestita per il modello di immagine e potenzialmente la macchina virtuale di compilazione di Image Builder Azure. In questo esempio l'identità gestita ottiene l'accesso "Collaboratore", ma è possibile perfezionare le autorizzazioni o il ruolo purché siano incluse le autorizzazioni necessarie per il corretto funzionamento del servizio Image Builder Azure.
Per altre informazioni sulle autorizzazioni necessarie per il servizio Image Builder Azure, vedere Configurare le autorizzazioni di Image Builder di macchine virtuali Azure usando il interfaccia della riga di comando di Azure.
Per altre informazioni su come assegnare e usare le identità gestite in Azure Image Builder, vedere Informazioni di riferimento sul modello di Image Builder della macchina virtuale: Identità.
Eseguire i comandi seguenti per creare l'identità gestita:
# 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
Crea una galleria e una definizione dell'immagine
Per usare VM Image Builder con Azure Compute Gallery, è necessario disporre di una galleria e di una definizione di immagine esistenti. VM Image Builder non crea automaticamente la galleria e la definizione di immagine.
Se non si dispone già di una galleria e di una definizione di immagine da usare, inizia creandole.
Per prima cosa, crea una galleria:
az sig create \
-g $resourceGroupName \
--gallery-name $acgName
Creare quindi una definizione dell'immagine:
az sig image-definition create \
-g $resourceGroupName \
--gallery-name $acgName \
--gallery-image-definition $imageDefName \
--publisher myIbPublisher \
--offer myOffer \
--sku 22_04-lts-gen2 \
--os-type Linux \
--hyper-v-generation V2
Creare il modello di immagine
Scaricare il modello JSON di esempio e configurarlo con le variabili. Il modello di immagine seguente usa come origine un'immagine di piattaforma, ma è possibile modificare l'origine impostando un'immagine di Azure Compute Gallery per abilitare la creazione automatica delle immagini ogni volta che è disponibile una nuova versione dell'immagine nella raccolta.
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
Requisiti del modello di immagine:
- Il
sourcedeve essere un'immagine della piattaforma oppure un'immagine di Azure Compute Gallery (attualmente sono consentite solo queste due origini) - Se si utilizza un'immagine della piattaforma, la versione nell'origine deve essere
Latest. Per un'immagine di Azure Compute Gallery, l'ultima parte dell'ID della risorsa che contiene il nome della versione deve essere impostata suLatest. - Non è possibile specificare una versione se si distribuisce l'immagine in Azure Compute Gallery. La versione viene incrementata automaticamente.
- Quando l'origine è impostata su un'immagine della raccolta di calcolo di Azure e la distribuzione è impostata su una raccolta di calcolo di Azure, l'immagine della raccolta di origine e l'immagine della raccolta di distribuzione non possono essere uguali. L'ID di definizione dell'immagine di Raccolta di calcolo di Azure non può essere la stessa per le immagini della raccolta di origine e della raccolta distribuita.
- Il modello di immagine deve avere "Succeeded" nel campo
provisioningState, il che significa che il modello è stato creato senza alcun problema. Se il provisioning del modello non viene eseguito correttamente, non sarà possibile creare un trigger.
Dopo aver configurato il modello, usare il comando seguente per inviare la configurazione dell'immagine al servizio Azure Image Builder:
az image builder create -g $resourceGroupName -n $imageTemplateName --image-template helloImageTemplateforTriggers.json
È possibile usare il comando seguente per verificare che il modello di immagine sia stato creato correttamente:
az image builder show --name $imageTemplateName --resource-group $resourceGroupName
Nota
Quando si esegue il comando precedente, provisioningState dovrebbe riportare "Succeeded", il che significa che il template è stato creato senza alcun problema. Se provisioningState non indica "Completato", non sarà possibile fare in modo che un trigger usi il modello di immagine.
Creare un trigger di origine
Scaricare il modello di trigger di esempio e configurarlo con le variabili. Il trigger seguente avvia una nuova compilazione di immagini ogni volta che viene aggiornata l'immagine di origine.
curl https://raw.githubusercontent.com/Azure/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
Requisiti di attivazione:
- La posizione nel trigger deve corrispondere alla posizione nel modello di immagine.
- Attualmente è supportato un solo
kindtipo di trigger:SourceImage. - Per ogni immagine è supportato un solo trigger
SourceImage. Se nell'immagine è già presente unSourceImagetrigger, non è possibile crearne uno nuovo. - Non è possibile modificare il campo
kindin un altro tipo di trigger. È necessario eliminare il trigger e ricrearlo oppure creare un altro trigger con la configurazione appropriata.
Usare il comando seguente per aggiungere il trigger al gruppo di risorse.
az image builder trigger create --name $ibTriggerName --resource-group $resourceGroupName --image-template-name $imageTemplateName --kind SourceImage
È anche possibile usare il comando seguente per verificare che il trigger sia stato creato correttamente:
az image builder trigger show --name $ibTriggerName --image-template-name $imageTemplateName --resource-group $resourceGroupName
Nota
Quando si esegue il comando sopra, provisioningState dovrebbe indicare Succeeded, il che significa che il trigger è stato creato senza problemi. In status, il codice dovrebbe indicare Healthy e il messaggio dovrebbe indicare Trigger is active.
Pulisci le tue risorse
Eliminazione del trigger
Usare il comando seguente per eliminare il trigger:
az image builder trigger delete --name $ibTriggerName --image-template-name $imageTemplateName --resource-group $resourceGroupName
Eliminazione del modello di immagine
Usare il comando seguente per eliminare il modello di immagine:
az image builder delete --name $imageTemplateName --resource-group $resourceGroupName