Azure Image Builder tetikleyicileriyle Otomatik Görüntü Oluşturmayı etkinleştirme
Derleme işlem hattınızda belirli ölçütler karşılandığında otomatik görüntü oluşturmayı etkinleştirmek için Azure Görüntü Oluşturucusu'nda (AIB) tetikleyicileri kullanabilirsiniz.
Önemli
Bölge başına izin verilebilen tetikleyici sayısıyla ilgili bir kısıtlama (özellikle abonelik başına bölge başına 100) olduğunu lütfen unutmayın.
Not
Şu anda yalnızca yeni bir kaynak görüntü için tetikleyici ayarlamayı destekliyoruz, ancak gelecekte farklı tetikleyici türlerini desteklemeyi bekliyoruz.
Not
Gereksiz derleme hatalarını önlemek için, görüntü şablonu derlemesi art arda birkaç kez başarısız olduysa (el ile veya otomatik olarak tetiklenir) tetikleyiciler aracılığıyla otomatik görüntü oluşturma devre dışı bırakılır. Yine de görüntü şablonunu el ile oluşturabilirsiniz ve el ile derleme başarılı olduktan sonra otomatik tetikleyiciler yeniden etkinleştirilir.
Önkoşullar
İlk tetikleyicinizi ayarlamadan önce Azure Image Builder API sürüm 2022-07-01'i kullandığınızdan emin olun.
Azure Image Builder'da tetikleyici ayarlama
Sağlayıcıları kaydetme
VM Görüntü Oluşturucusu'nu tetikleyicilerle kullanmak için aşağıdaki sağlayıcıları kaydetmeniz gerekir. Aşağıdaki komutları çalıştırarak kaydınızı denetleyin:
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
Çıkışta kayıtlı ifadesi yoksa aşağıdaki komutları çalıştırın:
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
Otomatik görüntü derleme tetikleyicileri özelliğini kaydedin:
az feature register --namespace Microsoft.VirtualMachineImages --name Triggers
Değişkenleri ayarla
İlk olarak, komutlarda tekrar tekrar kullanacağınız bazı değişkenleri ayarlamanız gerekir.
# 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)
Kaynak grubu oluştur
Şimdi görüntü şablonunuzu depolayabileceğiniz bir kaynak grubu oluşturmanız gerekir. Kaynak grubunuzu oluşturmak için aşağıdaki komutu kullanın:
az group create -n $resourceGroupName -l $location
Hizmet için yönetilen kimlik oluşturma
Ayrıca görüntü şablonu (ve büyük olasılıkla Azure Görüntü Oluşturucusu derleme VM'si) için kullanılacak bir yönetilen kimlik oluşturmanız gerekir. Bu örnekte, "Katkıda Bulunan" erişimine sahip bir yönetilen kimlik oluştururuz, ancak Azure Görüntü Oluşturucusu hizmetinin düzgün çalışması için gereken izinleri dahil ettiğiniz sürece yönetilen kimliğe atanan izinleri veya rolü istediğiniz şekilde geliştirebilirsiniz.
Azure Image Builder hizmeti için gereken izinler hakkında daha fazla bilgi için şu belgelere bakın: Azure CLI kullanarak Azure VM Görüntü Oluşturucusu izinlerini yapılandırma
Yönetilen kimliklerin Azure Görüntü Oluşturucusu'nda nasıl atanabileceği ve kullanılacağı hakkında daha fazla bilgi için şu belgelere bakın: VM Görüntü Oluşturucusu şablon başvurusu: Kimlik
Görüntü şablonu için kullanılacak yönetilen kimliği oluşturmak için aşağıdaki komutu kullanın:
# 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
Galeri ve görüntü tanımı oluşturma
VM Görüntü Oluşturucusu'nu Azure İşlem Galerisi ile kullanmak için mevcut bir galeriye ve görüntü tanımına sahip olmanız gerekir. VM Görüntü Oluşturucusu galeriyi ve görüntü tanımını sizin için oluşturmaz.
Kullanılacak bir galeriniz ve görüntü tanımınız yoksa, bunları oluşturarak başlayın.
İlk olarak bir galeri oluşturun:
az sig create \
-g $resourceGroupName \
--gallery-name $acgName
Ardından bir görüntü tanımı oluşturun:
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
Görüntü şablonunu oluşturma
Örnek JSON şablonunu indirin ve değişkenlerinizle yapılandırın. Aşağıdaki görüntü şablonu, kaynağı olarak platform görüntüsü kullanır, ancak Azure İşlem Galerisi'nizde yeni bir görüntü sürümü olduğunda otomatik görüntü oluşturmayı etkinleştirmek isterseniz kaynağı bir Azure İşlem Galerisi görüntüsüne dönüştürebilirsiniz.
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
Görüntü şablonu gereksinimleri:
- bir
source
Platform görüntüsü veya Azure İşlem Galerisi görüntüsü olmalıdır (şu anda yalnızca bu iki kaynağa izin verilir) - Platform Görüntüsü kullanıyorsanız, kaynaktaki sürümü olmalıdır
Latest
. Azure İşlem Galerisi görüntüsü için, kaynak kimliğinin sürüm adına sahip olan son bölümünün olarakLatest
ayarlanması gerekir. - Görüntüyü bir Azure İşlem Galerisi'ne dağıtıyorsanız bir sürüm belirtemezsiniz. Sürüm otomatik olarak artırılır.
- Kaynak bir Azure İşlem Galerisi görüntüsüne ayarlandığında ve dağıtılmış bir Azure İşlem Galerisi olarak ayarlandığında, kaynak galeri görüntüsü ve dağıtım galerisi görüntüsü aynı olamaz. Azure İşlem Galerisi görüntü tanımı kimliği hem kaynak galeri görüntüsü hem de dağıtılmış galeri görüntüsü için aynı olamaz.
- Görüntü şablonunun içinde
provisioningState
"Başarılı" olmalıdır, yani şablon herhangi bir sorun olmadan oluşturulmuştur. Şablon başarıyla sağlanmamışsa tetikleyici oluşturamazsınız.
Şablonunuzu yapılandırdıktan sonra aşağıdaki komutu kullanarak görüntü yapılandırmasını Azure Image Builder hizmetine gönderin:
az image builder create -g $resourceGroupName -n $imageTemplateName --image-template helloImageTemplateforTriggers.json
Görüntü şablonunun başarıyla oluşturulduğundan emin olmak için aşağıdaki komutu kullanabilirsiniz:
az image builder show --name $imageTemplateName --resource-group $resourceGroupName
Not
Yukarıdaki provisioningState
komutu çalıştırırken "Başarılı" ifadesi kullanılmalıdır. Bu, şablonun sorunsuz oluşturulduğu anlamına gelir. provisioningState
başarılı demezse, görüntü şablonunu kullanan bir tetikleyici yapamazsınız.
Kaynak tetikleyici oluşturma
Örnek tetikleyici şablonunu indirin ve değişkenlerinizle yapılandırın. Aşağıdaki tetikleyici, kaynak görüntü her güncelleştirildiğinde yeni bir görüntü derlemesi başlatır.
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
Tetikleyici gereksinimleri:
- Tetikleyicideki konumun görüntü şablonundaki konumla aynı olması gerekir. Bu, cmdlet'in
az resource create
bir gereksinimidir. - Şu anda "SourceImage" olan tetikleyicilerden birini
kind
destekliyoruz - Görüntü başına yalnızca bir "SourceImage" tetikleyicisini destekliyoruz. Görüntüde zaten bir "SourceImage" tetikleyiciniz varsa yeni bir tetikleyici oluşturamazsınız.
- Alanı başka bir tetikleyici türüne
kind
güncelleştiremezsiniz. Tetikleyiciyi silip yeniden oluşturmanız veya uygun yapılandırmayla başka bir tetikleyici oluşturmanız gerekir.
Tetikleyiciyi kaynak grubunuza eklemek için aşağıdaki komutu kullanın.
az image builder trigger create --name $ibTriggerName --resource-group $resourceGroupName --image-template-name $imageTemplateName --kind SourceImage
Tetikleyicinin başarıyla oluşturulup oluşturulmadığını denetlemek için aşağıdaki komutu da kullanabilirsiniz:
az image builder trigger show --name $ibTriggerName --image-template-name $imageTemplateName --resource-group $resourceGroupName
Not
Yukarıdaki komutu çalıştırırken komutunun provisioningState
demesi Succeeded
gerekir. Bu, tetikleyicinin herhangi bir sorun olmadan oluşturulduğu anlamına gelir. içinde status
kodun ve iletinin de şöyle Healthy
demesi gerekir: Trigger is active.
Kaynaklarınızı temizleme
Tetikleyici siliniyor
Tetikleyiciyi silmek için aşağıdaki komutu kullanın:
az image builder trigger delete --name $ibTriggerName --image-template-name $imageTemplateName --resource-group $resourceGroupName
Görüntü şablonunu silme
Görüntü şablonunu silmek için aşağıdaki komutu kullanın:
az image builder delete --name $imageTemplateName --resource-group $resourceGroupName
Sonraki adımlar
Daha fazla bilgi için Görüntü Oluşturucusu şablon başvurusuna göz atın.