Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Триггеры в Конструкторе образов Azure (AIB) можно использовать для включения автоматического создания образа, если в конвейере сборки выполняются определенные критерии.
Внимание
Существует ограничение в 100 триггеров для каждого региона на подписку.
Примечание.
Чтобы предотвратить ненужные сбои сборки, автоматическое создание образа по триггерам отключается, если сборка шаблона образа несколько раз подряд завершается сбоем (независимо от того, запускается ли она вручную или автоматически). Вы по-прежнему можете создать шаблон образа вручную. После успешного выполнения сборки, запущенной вручную, автоматические триггеры снова активируются.
Предварительные требования
Перед настройкой первого триггера убедитесь, что вы используете API построителя образов Azure версии 2022-07-01 или более поздней версии.
Настройка триггера в построителе образов Azure
Регистрация поставщиков
Чтобы использовать VM Image Builder с триггерами, зарегистрируйте следующих поставщиков. Проверьте регистрацию, выполнив следующие команды:
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
Если в выходных данных не указано, что функция зарегистрирована, выполните следующие команды:
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
Зарегистрируйте функцию триггеров сборки автоматического образа:
az feature register --namespace Microsoft.VirtualMachineImages --name Triggers
Задать переменные
Сначала задайте некоторые переменные, которые многократно используются в командах.
# 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)
Создать группу ресурсов
Создайте группу ресурсов, в которой можно сохранить шаблон образа:
az group create -n $resourceGroupName -l $location
Создайте управляемое удостоверение личности для службы
Создайте управляемый идентификатор для шаблона образа (и, при необходимости, для виртуальной машины сборки Azure Image Builder). В этом примере управляемому удостоверению назначается роль "Участник", но вы можете точнее настроить разрешения или выбрать другую роль, если в них включены разрешения, необходимые для правильной работы службы Azure Image Builder.
Дополнительные сведения о разрешениях, необходимых для службы построителя образов Azure, см. в разделе Настройка разрешений построителя образов виртуальных машин Azure с помощью Azure CLI.
Дополнительные сведения о том, как управляемые удостоверения можно назначать и использовать в построителе образов Azure, см. в справочнике по шаблону конструктора образов виртуальных машин: Удостоверение.
Выполните следующие команды, чтобы создать управляемое удостоверение:
# 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
Создание коллекции и определения изображений
Чтобы использовать Конструктор образов виртуальных машин вместе с Галереей вычислений Azure, необходимо иметь существующую галерею и определение образа. Конструктор образов виртуальных машин не создает за вас галерею и определение образа.
Если у вас еще нет галереи и определения образа, сначала создайте их.
Сначала создайте коллекцию:
az sig create \
-g $resourceGroupName \
--gallery-name $acgName
Затем создайте определение образа:
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
Создание шаблона образа
Скачайте пример шаблона JSON и настройте его с помощью переменных. В следующем шаблоне изображения в качестве источника используется образ платформы, но вы можете изменить источник на образ коллекции вычислений Azure, чтобы включить автоматическое создание образа в любой момент, когда в коллекции есть новая версия образа.
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
Требования к шаблону изображения:
-
sourceдолжен быть либо образом платформы, либо образом Azure Compute Gallery (на данный момент разрешены только эти два источника) - Если вы используете образ платформы, версия в источнике должна быть
Latest. Для образа Azure Compute Gallery в последней части идентификатора ресурса, содержащей имя версии, следует указатьLatest. - Вы не можете указать версию, если распространяете образ в Azure Compute Gallery. Версия автоматически увеличивается.
- Если в качестве source задан образ из Галереи вычислений Azure, а для distribute указана Галерея вычислений Azure, образ в исходной галерее и образ в галерее распространения не могут совпадать. Идентификатор определения образа коллекции вычислений Azure не может совпадать как для исходного образа коллекции, так и для образа распределенной коллекции.
- В поле
provisioningStateшаблона образа должно быть значение "Succeeded", то есть шаблон был создан без каких-либо проблем. Если шаблон не подготовлен успешно, вы не сможете создать триггер.
После настройки шаблона выполните следующую команду, чтобы отправить конфигурацию образа в службу Конструктора образов Azure:
az image builder create -g $resourceGroupName -n $imageTemplateName --image-template helloImageTemplateforTriggers.json
Чтобы убедиться, что шаблон образа был создан успешно, можно использовать следующую команду:
az image builder show --name $imageTemplateName --resource-group $resourceGroupName
Примечание.
При выполнении команды выше должно быть указано provisioningState "Succeeded", что означает, что шаблон был создан без каких-либо ошибок. Если provisioningState не имеет значение succeeded, вы не сможете настроить триггер на использование шаблона образа.
Создание триггера источника
Скачайте пример шаблона триггера и настройте его с помощью переменных. Следующий триггер запускает новую сборку образа при обновлении исходного образа.
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
Требования к триггеру:
- Расположение в триггере должно совпадать с расположением в шаблоне изображения.
- В настоящее время поддерживается только один
kindиз триггеров:SourceImage - Поддерживается только один триггер на изображение
SourceImage. Если у вас уже естьSourceImageтриггер на изображении, вы не можете создать новый. - Вы не можете изменить значение поля
kindна другой тип триггера. Необходимо удалить триггер и повторно создать его или создать другой триггер с соответствующей конфигурацией.
Используйте следующую команду, чтобы добавить триггер в группу ресурсов.
az image builder trigger create --name $ibTriggerName --resource-group $resourceGroupName --image-template-name $imageTemplateName --kind SourceImage
Для проверки успешности создания триггера можно также использовать следующую команду:
az image builder trigger show --name $ibTriggerName --image-template-name $imageTemplateName --resource-group $resourceGroupName
Примечание.
При выполнении приведённой выше команды в provisioningState должно быть указано Succeeded, что означает, что триггер был создан без каких-либо проблем. В status должно быть указано Healthy, а в сообщении — Trigger is active..
Очистка ресурсов
Удаление триггера
Чтобы удалить триггер, используйте следующую команду:
az image builder trigger delete --name $ibTriggerName --image-template-name $imageTemplateName --resource-group $resourceGroupName
Удаление шаблона изображения
Чтобы удалить шаблон изображения, используйте следующую команду:
az image builder delete --name $imageTemplateName --resource-group $resourceGroupName