Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Applies to: ✔️ Linux VMs ✔️ Windows VMs ✔️ Flexible scale sets
Azure Image Builder использует Bicep-файл или файл шаблона JSON шаблона ARM для передачи сведений в службу построителя образов. В этой статье мы рассмотрим разделы файлов, чтобы создать собственные. For latest API versions, see template reference. Примеры полных JSON-файлов см. в разделе GitHub, посвященном Конструктору образов виртуальных машин Azure.
Базовый формат:
{
"type": "Microsoft.VirtualMachineImages/imageTemplates",
"location": "<region>",
"tags": {
"<name>": "<value>",
"<name>": "<value>"
},
"identity": {},
"properties": {
"buildTimeoutInMinutes": <minutes>,
"customize": [],
"errorHandling":[],
"distribute": [],
"optimize": [],
"source": {},
"stagingResourceGroup": "/subscriptions/<subscriptionID>/resourceGroups/<stagingResourceGroupName>",
"validate": {},
"vmProfile": {
"vmSize": "<vmSize>",
"osDiskSizeGB": <sizeInGB>,
"vnetConfig": {
"subnetId": "/subscriptions/<subscriptionID>/resourceGroups/<vnetRgName>/providers/Microsoft.Network/virtualNetworks/<vnetName>/subnets/<subnetName1>",
"containerInstanceSubnetId": "/subscriptions/<subscriptionID>/resourceGroups/<vnetRgName>/providers/Microsoft.Network/virtualNetworks/<vnetName>/subnets/<subnetName2>",
"proxyVmSize": "<vmSize>"
},
"userAssignedIdentities": [
"/subscriptions/<subscriptionID>/resourceGroups/<identityRgName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identityName1>",
"/subscriptions/<subscriptionID>/resourceGroups/<identityRgName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identityName2>",
"/subscriptions/<subscriptionID>/resourceGroups/<identityRgName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identityName3>",
...
]
}
}
}
Follow all Best Practices while creating image templates.
API version
Версия API будет меняться со временем по мере изменения API. См. статью Новые возможности Конструктора образов виртуальных машин Azure, чтобы узнать обо всех основных изменениях API и обновлениях функций для службы Конструктора образов виртуальных машин Azure
Type
type — это тип ресурса, который должен быть Microsoft.VirtualMachineImages/imageTemplates.
Location
Служба "Конструктор образов виртуальных машин" доступна в следующих регионах:
Note
Вы по-прежнему можете распределять образы вне этих регионов.
- East US
- Восточная часть США 2
- Центрально-западная часть США
- West US
- западная часть США 2
- Западная часть США — 3
- Центрально-южная часть США
- North Europe
- West Europe
- Юго-Восточная Азия
- Australia Southeast
- Australia East
- UK South
- UK West
- Brazil South
- Canada Central
- Central India
- Central US
- France Central
- Центрально-Западная Германия
- Japan East
- Центрально-северная часть США
- Norway East
- Switzerland North
- Западная Индия Jio
- UAE North
- East Asia
- Korea Central
- Северная часть ЮАР
- Qatar Central
- USGov Аризона (общедоступная предварительная версия);
- USGov Вирджиния (общедоступная предварительная версия).
- Китай Северная 3 (общедоступная предварительная версия)
- Sweden Central
- Poland Central
- Italy North
- Israel Central
- Северная часть Новой Зеландии
- Taiwan Northwest
Important
Зарегистрируйте возможность Microsoft.VirtualMachineImages/FairfaxPublicPreview, чтобы получить доступ к общедоступной предварительной версии Конструктора образов Azure в регионах Azure для государственных организаций (USGov Аризона и USGov Вирджиния).
Important
Зарегистрируйте функцию Microsoft.VirtualMachineImages/MooncakePublicPreview для доступа к общедоступной предварительной версии Конструктора образов Azure в регионе China North 3.
To access the Azure VM Image Builder public preview in the Azure Government regions (USGov Arizona and USGov Virginia), you must register the Microsoft.VirtualMachineImages/FairfaxPublicPreview feature. Для этого выполните следующую команду в PowerShell или Azure CLI:
Register-AzProviderPreviewFeature -ProviderNamespace Microsoft.VirtualMachineImages -Name FairfaxPublicPreview
To access the Azure VM Image Builder public preview in the China North 3 region, you must register the Microsoft.VirtualMachineImages/MooncakePublicPreview feature. Для этого выполните следующую команду в PowerShell или Azure CLI:
Register-AzProviderPreviewFeature -ProviderNamespace Microsoft.VirtualMachineImages -Name MooncakePublicPreview
Data residency
Служба Конструктора образов виртуальных машин Azure хранит данные клиентов в регионах со строгими правилами расположения данных. Если сбой службы для регионов с требованиями к месту расположения данных, необходимо создать файлы или шаблоны Bicep в другом регионе и географическом регионе.
Zone redundancy
Распространение поддерживает избыточность между зонами, виртуальные жесткие диски (VHD) по умолчанию распространяются по учетной записи хранилища, избыточного между зонами (ZRS), а версия Azure Compute Gallery (ранее известная как Shared Image Gallery) будет поддерживать тип хранилища ZRS , если он указан.
Tags
Теги — это пары "ключ — значение", которые вы можете указать для создаваемого образа.
Identity
Добавить назначаемые пользователем удостоверения можно двумя способами, описанными ниже.
Назначаемое пользователем удостоверение для ресурса шаблона образа Конструктора образов виртуальных машин Azure
Обязательно. Чтобы предоставить Конструктору образов Azure разрешения на чтение и запись образов, а также на чтение скриптов из службы хранилища Azure, вы должны создать назначаемое пользователем удостоверение Azure с разрешениями на доступ к отдельным ресурсам. Дополнительные сведения о том, как работают разрешения Image Builder, и описание соответствующих шагов см. в статье Создание образа и использование управляемого удостоверения, назначаемого пользователем, для доступа к файлам в учетной записи хранения Azure.
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"<imgBuilderId>": {}
}
}
Назначаемое пользователем удостоверение для службы "Конструктор образов":
- Поддерживает только одно удостоверение.
- Не поддерживает пользовательские доменные имена.
Дополнительные сведения см. в разделе Что такое управляемые удостоверения для ресурсов Azure. Дополнительные сведения о развертывании этого компонента см. в разделе Настройка управляемых удостоверений для ресурсов Azure на виртуальной машине Azure с помощью Azure CLI.
Назначаемое пользователем удостоверение для виртуальной машины сборки Конструктора образов
Это поле доступно только в версиях API 2021-10-01 и выше.
Необязательно. Виртуальная машина сборки построителя образов, созданная службой построителя образов в подписке, используется для создания и настройки образа. Чтобы виртуальная машина сборки Конструктора образов имела разрешения на проверку подлинности в других службах, например Azure Key Vault, в вашей подписке, необходимо создать одно или несколько назначаемых пользователем Azure удостоверений, имеющих разрешения для отдельных ресурсов. После этого Конструктор образов виртуальных машин Azure сможет связать эти назначаемые пользователем удостоверения с виртуальной машиной сборки. Скрипты настройки, выполняемые на виртуальной машине сборки, затем смогут получать маркеры для этих удостоверений и взаимодействовать с другими ресурсами Azure по мере необходимости. Имейте в виду, что назначаемому пользователем удостоверению для Конструктора образов виртуальных машин Azure должна быть назначена роль "Оператор управляемого удостоверения" для всех назначаемых пользователем удостоверений в Конструкторе образов, чтобы их можно было связать с виртуальной машиной сборки.
Note
Обратите внимание, что для виртуальной машины сборки Конструктора образов можно указать несколько удостоверений, включая удостоверение, созданное для ресурса шаблона образа. По умолчанию удостоверение, созданное для ресурса шаблона образа, не будет добавлено автоматически в виртуальную машину сборки.
"properties": {
"vmProfile": {
"userAssignedIdentities": [
"/subscriptions/<subscriptionID>/resourceGroups/<identityRgName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identityName>"
]
}
}
Назначаемое пользователем удостоверение для виртуальной машины сборки Конструктора образов:
- Поддерживает список, состоящий из одного или нескольких управляемых удостоверений, назначаемых пользователем, для настройки на виртуальной машине.
- Поддерживает сценарии с несколькими подписками (удостоверение создается в одной подписке, а шаблон образа — в другой подписке в том же арендаторе).
- Не поддерживает сценарии с несколькими арендаторами (удостоверение создается в одном арендаторе, а шаблон образа — в другом).
Дополнительные сведения см. на следующих ресурсах:
- Использование управляемых удостоверений для ресурсов Azure на виртуальной машине Azure для получения маркера доступа
- Как использовать управляемые удостоверения для ресурсов Azure на виртуальной машине Azure для входа
Properties: buildTimeoutInMinutes
Максимальная длительность ожидания при создании шаблона образа (включает настройки, проверки и распространение).
Если вы не укажете свойство или зададите значение 0, будет использоваться значение по умолчанию, которое составляет 240 минут или четыре часа. Минимальное значение — 6 минут, а максимальное — 960 минут или 16 часов. Когда значение времени ожидания достигается (если сборка образа завершена), вы увидите ошибку, аналогичную следующей:
[ERROR] Failed while waiting for packerizer: Timeout waiting for microservice to
[ERROR] complete: 'context deadline exceeded'
Для Windows не рекомендуется задавать значение buildTimeoutInMinutes меньше 60 минут. If you find you're hitting the timeout, review the logs to see if the customization step is waiting on something like user input. Если вам потребуется больше времени для завершения настроек, увеличьте значение buildTimeoutInMinutes. Но не задавайте слишком высокое значение, так как, возможно, вам придется дожидаться, пока это время истечет, прежде чем появится сообщение об ошибке.
Properties: customize
Конструктор образов поддерживает несколько настройщиков, которые используются для настройки образа, например выполнения скриптов или перезагрузки серверов.
Применяя customize, помните следующие правила.
- Вы можете использовать несколько настройщиков
- Настройщики выполняются в порядке, указанном в шаблоне.
- В случае сбоя одного из настройщиков происходит сбой всего компонента настройки и выводится сообщение об ошибке.
- Тщательно протестируйте скрипты, прежде чем использовать их в шаблоне. Отладка скриптов — более простая операция.
- Не включайте в скрипты конфиденциальные данные. Встроенные команды можно просмотреть в определении шаблона образа. Если у вас есть конфиденциальная информация (включая пароли, маркер SAS, маркеры проверки подлинности и т. д.), ее следует включить в скрипты в службе хранилища Azure, где для доступа требуется проверка подлинности.
- Расположение скриптов должно быть общедоступным, если вы не используете удостоверение, назначенное пользователем.
Раздел customize — это массив. Поддерживаемые типы настройщика: File, PowerShell, Shell, WindowsRestart и WindowsUpdate.
"customize": [
{
"type": "File",
"destination": "string",
"sha256Checksum": "string",
"sourceUri": "string"
},
{
"type": "PowerShell",
"inline": [ "string" ],
"runAsSystem": "bool",
"runElevated": "bool",
"scriptUri": "string",
"sha256Checksum": "string",
"validExitCodes": [ "int" ]
},
{
"type": "Shell",
"inline": [ "string" ],
"scriptUri": "string",
"sha256Checksum": "string"
},
{
"type": "WindowsRestart",
"restartCheckCommand": "string",
"restartCommand": "string",
"restartTimeout": "string"
},
{
"type": "WindowsUpdate",
"filters": [ "string" ],
"searchCriteria": "string",
"updateLimit": "int"
}
]
Shell customizer
Настройщик Shell поддерживает выполнение скриптов оболочки в Linux. The shell scripts must be publicly accessible or you must have configured an MSI for Image Builder to access them.
"customize": [
{
"type": "Shell",
"name": "<name>",
"scriptUri": "<link to script>",
"sha256Checksum": "<sha256 checksum>"
}
],
"customize": [
{
"type": "Shell",
"name": "<name>",
"inline": "<commands to run>"
}
]
Customize properties:
type – Shell.
name - name for tracking the customization.
scriptUri - URI to the location of the file.
inline - array of shell commands, separated by commas.
sha256Checksum - Value of sha256 checksum of the file, you generate this value locally, and then Image Builder will checksum and validate.
Чтобы сформировать sha256Checksum, откройте окно терминала в Mac/Linux и выполните следующую команду:
sha256sum <fileName>
Note
Встроенные команды хранятся в определении шаблона образа, поэтому их можно увидеть при выгрузке определения образа. Если у вас есть важные команды или значения (включая пароли, маркер SAS, маркеры проверки подлинности и пр.), рекомендуется включить их в скрипты и использовать идентификатор пользователя для проверки подлинности в службе хранилища Azure.
Привилегии суперпользователя
Добавьте в команды префикс sudo для их выполнения с правами суперпользователя. Вы можете включить команды в скрипты или использовать встроенные команды, например:
"type": "Shell",
"name": "setupBuildPath",
"inline": [
"sudo mkdir /buildArtifacts",
"sudo cp /tmp/index.html /buildArtifacts/index.html"
]
Пример скрипта с использованием команды sudo, которую можно вызвать с помощью scriptUri:
#!/bin/bash -e
echo "Telemetry: creating files"
mkdir /myfiles
echo "Telemetry: running sudo 'as-is' in a script"
sudo touch /myfiles/somethingElevated.txt
Настройщик перезапуска Windows
С помощью настройщика WindowsRestart вы можете перезапустить виртуальную машину Windows и дождаться, пока она снова будет подключена. Этот настройщик позволит вам установить программное обеспечение, требующее перезагрузки.
"customize": [
{
"type": "WindowsRestart",
"restartCommand": "shutdown /r /f /t 0",
"restartCheckCommand": "echo Azure-Image-Builder-Restarted-the-VM > c:\\buildArtifacts\\azureImageBuilderRestart.txt",
"restartTimeout": "5m"
}
]
Customize properties:
- Type: WindowsRestart.
-
restartCommand - Command to execute the restart (optional). Значение по умолчанию —
'shutdown /r /f /t 0 /c \"packer restart\"'. - restartCheckCommand – Command to check if restart succeeded (optional).
-
restartTimeout - Restart time out specified as a string of magnitude and unit. Например,
5m(5 минут) или2h(2 часа). Значение по умолчанию —5m.
Note
Настройщик перезапуска Linux отсутствует.
PowerShell customizer
Настройщик PowerShell поддерживает выполнение сценариев PowerShell и встроенных команд в Windows, скрипты должны быть общедоступными, чтобы служба могла получить к ним доступ.
"customize": [
{
"type": "PowerShell",
"name": "<name>",
"scriptUri": "<path to script>",
"runElevated": <true false>,
"runAsSystem": <true false>,
"sha256Checksum": "<sha256 checksum>"
},
{
"type": "PowerShell",
"name": "<name>",
"inline": "<PowerShell syntax to run>",
"validExitCodes": [<exit code>],
"runElevated": <true or false>,
"runAsSystem": <true or false>
}
]
Customize properties:
type – PowerShell.
scriptUri - URI to the location of the PowerShell script file.
inline – Inline commands to be run, separated by commas.
validExitCodes – Optional, valid codes that can be returned from the script/inline command. Свойство позволяет избежать сбоя скрипта или встроенной команды.
runElevated – Optional, boolean, support for running commands and scripts with elevated permissions.
runAsSystem - Optional, boolean, determines whether the PowerShell script should be run as the System user.
sha256Checksum - generate the SHA256 checksum of the file locally, update the checksum value to lowercase, and Image Builder will validate the checksum during the deployment of the image template.
To generate the sha256Checksum, use the Get-FileHash cmdlet in PowerShell.
File customizer
Настройщик File позволяет Конструктору образов скачивать файлы из репозитория GitHub или службы хранилища Azure. Настройщик доступен как в Linux, так и в Windows. Если у вас есть конвейер сборки образа, который зависит от артефактов сборки, можно установить настройщик File для скачивания из общей папки сборки и переместить артефакты в образ.
"customize": [
{
"type": "File",
"name": "<name>",
"sourceUri": "<source location>",
"destination": "<destination>",
"sha256Checksum": "<sha256 checksum>"
}
]
Свойства настройщика File:
sourceUri - an accessible storage endpoint, this endpoint can be GitHub or Azure storage. Вы можете загружать только один файл, а не весь каталог. Если необходимо загрузить каталог, используйте сжатый файл, а затем распакуйте его с помощью настройщиков Shell или PowerShell.
Note
Если sourceUri является учетной записью служба хранилища Azure, независимо от того, помечен ли большой двоичный объект общедоступным, необходимо предоставить разрешения управляемого удостоверения пользователя для чтения в большом двоичном объекте. See this example to set the storage permissions.
destination – the full destination path and file name. Все указанные пути и подкаталоги должны существовать. Для их предварительной настройки используйте настройщики Shell или PowerShell. Вы можете использовать настройщики скриптов для создания пути.
Настройщик поддерживает каталоги Windows и пути Linux, но с некоторыми отличиями:
- В Linux Конструктор образов может осуществлять запись только по пути /tmp.
- В Windows нет ограничений на используемый путь, но этот путь должен существовать.
Если возникает ошибка при попытке скачать файл или поместить его в указанный каталог, настройка шага завершается ошибкой, и эта ошибка будет находиться в customization.log.
Note
Настройщик файлов подходит только для скачивания небольших файлов, размером <20 МБ. Для скачивания файлов большего размера используйте скрипт или встроенную команду с кодом для скачивания файлов, например wget или curl в Linux, Invoke-WebRequest в Windows. Для файлов, которые находятся в хранилище Azure, убедитесь, что вы назначите удостоверение с разрешениями для просмотра этого файла виртуальной машине сборки, следуя инструкциям в документации: назначаемое пользователем удостоверение для виртуальной машины сборки построителя образов. Любой файл, который не хранится в Azure, должен быть общедоступным, чтобы скачать его с помощью построителя образов Azure.
sha256Checksum - generate the SHA256 checksum of the file locally, update the checksum value to lowercase, and Image Builder will validate the checksum during the deployment of the image template.
To generate the sha256Checksum, use the Get-FileHash cmdlet in PowerShell.
Настройщик WindowsUpdate
Настройщик WindowsUpdate создан на основе средства подготовки Центра обновления Windows для Packer. Это проект с открытым исходным кодом, поддерживаемый сообществом Packer. Корпорация Майкрософт тестирует и проверяет это средство подготовки с помощью службы Конструктора образов, планируя и дальше исследовать проблемы с этим средством и работать над их устранением. Но этот проект с открытым кодом официально не поддерживается корпорацией Майкрософт. Подробную документацию и справку по данному средству подготовки Центра обновления Windows см. в репозитории проекта.
"customize": [
{
"type": "WindowsUpdate",
"searchCriteria": "IsInstalled=0",
"filters": [
"exclude:$_.Title -like '*Preview*'",
"include:$true"
],
"updateLimit": 20
}
]
Customizer properties:
- type – WindowsUpdate.
- searchCriteria - Optional, defines which type of updates are installed (like Recommended or Important), BrowseOnly=0 and IsInstalled=0 (Recommended) is the default.
- filters – Optional, allows you to specify a filter to include or exclude updates.
- updateLimit – Optional, defines how many updates can be installed, default 1000.
Note
Настройка Центра обновления Windows может завершиться ошибкой при наличии невыполненных перезапусков Windows или при выполнении установки приложения. Обычно эта ошибка может появиться в customization.log, в System.Runtime.InteropServices.COMException (0x80240016): Exception from HRESULT: 0x80240016. We strongly advise you consider adding in a Windows Restart, and/or allowing applications enough time to complete their installations using sleep or wait commands in the inline commands or scripts before running Windows Update.
Generalize
По умолчанию Конструктор образов виртуальных машин Azure также выполняет код deprovision в конце каждого этапа настройки образа, чтобы подготовить образ к использованию. Подготовка к использованию — это процесс, в котором образ настраивается для многократного использования в целях создания нескольких виртуальных машин. Для виртуальных машин Windows Конструктор образов виртуальных машин Azure использует команду Sysprep. Для Linux Конструктор образов выполняет код waagent -deprovision.
Команды построителя образов для обобщения могут не подходить для каждой ситуации, поэтому Конструктор образов Azure позволяет настроить эту команду при необходимости.
Если выполняется перенос существующей настройки и вы используете разные команды Sysprep и waagent, вы можете применять универсальные команды Конструктора образов, а в случае сбоя создания виртуальной машины — свои собственные команды Sysprep или waagent.
Если Построитель образов Azure успешно создает пользовательский образ Windows и создаете виртуальную машину из нее, найдите, что создание виртуальной машины завершается сбоем или не завершается успешно, необходимо просмотреть документацию по Sysprep Windows Server Sysprep или отправить запрос на поддержку с помощью группы поддержки служб поддержки служб клиентов Windows Server, которая может устранить неполадки и рекомендовать правильное использование Sysprep.
Команда Sysprep по умолчанию
Write-Output '>>> Waiting for GA Service (RdAgent) to start ...'
while ((Get-Service RdAgent).Status -ne 'Running') { Start-Sleep -s 5 }
Write-Output '>>> Waiting for GA Service (WindowsAzureTelemetryService) to start ...'
while ((Get-Service WindowsAzureTelemetryService) -and ((Get-Service WindowsAzureTelemetryService).Status -ne 'Running')) { Start-Sleep -s 5 }
Write-Output '>>> Waiting for GA Service (WindowsAzureGuestAgent) to start ...'
while ((Get-Service WindowsAzureGuestAgent).Status -ne 'Running') { Start-Sleep -s 5 }
if( Test-Path $Env:SystemRoot\system32\Sysprep\unattend.xml ) {
Write-Output '>>> Removing Sysprep\unattend.xml ...'
Remove-Item $Env:SystemRoot\system32\Sysprep\unattend.xml -Force
}
if (Test-Path $Env:SystemRoot\Panther\unattend.xml) {
Write-Output '>>> Removing Panther\unattend.xml ...'
Remove-Item $Env:SystemRoot\Panther\unattend.xml -Force
}
Write-Output '>>> Sysprepping VM ...'
& $Env:SystemRoot\System32\Sysprep\Sysprep.exe /oobe /generalize /quiet /quit
while($true) {
$imageState = (Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\State).ImageState
Write-Output $imageState
if ($imageState -eq 'IMAGE_STATE_GENERALIZE_RESEAL_TO_OOBE') { break }
Start-Sleep -s 5
}
Write-Output '>>> Sysprep complete ...'
Команда Linux deprovision по умолчанию
WAAGENT=/usr/sbin/waagent
waagent -version 1> /dev/null 2>&1
if [ $? -eq 0 ]; then
WAAGENT=waagent
fi
$WAAGENT -force -deprovision+user && export HISTSIZE=0 && sync
Переопределение команд
Чтобы переопределить команды, с помощью средств подготовки скриптов PowerShell или Shell создайте файлы команд со строго соответствующими именами файлов и разместите их в правильных каталогах:
- Windows: c:\DeprovisioningScript.ps1
- Linux: /tmp/DeprovisioningScript.sh
Построитель образов считывает эти команды, эти команды записываются в журналы AIB, customization.log. See troubleshooting on how to collect logs.
Properties: errorHandling
Свойство errorHandling позволяет настроить способ обработки ошибок во время создания образа.
Свойство errorHandling позволяет настроить способ обработки ошибок во время создания образа. Он имеет два свойства:
- onCustomizerError - Specifies the action to take when an error occurs during the customizer phase of image creation.
- onValidationError - Specifies the action to take when an error occurs during validation of the image template.
Свойство errorHandling также имеет два возможных значения для обработки ошибок во время создания образа:
- cleanup - Ensures that temporary resources created by Packer are cleaned up even if Packer or one of the customizations/validations encounters an error. Это обеспечивает обратную совместимость с существующим поведением.
- abort - In case Packer encounters an error, the Azure Image Builder (AIB) service skips the clean up of temporary resources. Как владелец шаблона AIB, вы несете ответственность за очистку этих ресурсов из подписки. Эти ресурсы могут содержать полезные сведения, такие как журналы и файлы, оставленные на временной виртуальной машине, которая может помочь в расследовании ошибки, обнаруженной Packer.
Properties: distribute
Конструктор образов Azure поддерживает три целевых объекта распространения:
- ManagedImage - Managed image.
- sharedImage - Azure Compute Gallery.
- VHD - VHD in a storage account.
Вы можете распространить образ в оба типа целевого объекта в рамках одной конфигурации.
Note
Стандартная команда Конструктора образов Azure sysprep не содержит /mode:vm, но это свойство может требоваться при создании образов, в которых будет установлена роль HyperV. Если необходимо добавить этот аргумент команды, необходимо переопределить команду sysprep.
Так как у вас может быть несколько целевых объектов для распространения образа, Конструктор образов поддерживает состояние для каждого целевого объекта распространения, которое можно получить, запросив runOutputName.
runOutputName — объект, который можно запросить после распространения, чтобы получить сведения об этом распространении. Например, можно запросить расположение VHD, регионы, в которые была реплицирована версия образа, или версию созданного образа SIG. Это свойство имеет каждый целевой объект распространения. Имя runOutputName должно быть уникальным для каждого целевого объекта распространения. Ниже приведен пример с запрашиванием распространения Коллекции вычислений Azure.
subscriptionID=<subcriptionID>
imageResourceGroup=<resourceGroup of image template>
runOutputName=<runOutputName>
az resource show \
--ids "/subscriptions/$subscriptionID/resourcegroups/$imageResourceGroup/providers/Microsoft.VirtualMachineImages/imageTemplates/ImageTemplateLinuxRHEL77/runOutputs/$runOutputName" \
--api-version=2023-07-01
Output:
{
"id": "/subscriptions/xxxxxx/resourcegroups/rheltest/providers/Microsoft.VirtualMachineImages/imageTemplates/ImageTemplateLinuxRHEL77/runOutputs/rhel77",
"identity": null,
"kind": null,
"location": null,
"managedBy": null,
"name": "rhel77",
"plan": null,
"properties": {
"artifactId": "/subscriptions/xxxxxx/resourceGroups/aibDevOpsImg/providers/Microsoft.Compute/galleries/devOpsSIG/images/rhel/versions/0.24105.52755",
"provisioningState": "Succeeded"
},
"resourceGroup": "rheltest",
"sku": null,
"tags": null,
"type": "Microsoft.VirtualMachineImages/imageTemplates/runOutputs"
}
Distribute: managedImage
Выходные данные изображения — это ресурс управляемого образа.
{
"type":"ManagedImage",
"imageId": "<resource ID>",
"location": "<region>",
"runOutputName": "<name>",
"artifactTags": {
"<name>": "<value>",
"<name>": "<value>"
}
}
Distribute properties:
- type – ManagedImage
- imageId – Resource ID of the destination image, expected format: /subscriptions/<subscriptionId>/resourceGroups/<destinationResourceGroupName>/providers/Microsoft.Compute/images/<imageName>
- location - location of the managed image.
- runOutputName – unique name for identifying the distribution.
- artifactTags - Optional user specified key\value tags.
Note
Целевая группа ресурсов должна существовать. Если вы хотите распространить образ в другой регион, это увеличит время развертывания.
Distribute: sharedImage
Коллекция вычислений Azure — это новая служба управления образами, которая обеспечивает управление репликацией региона образа, управление версиями и предоставление общего доступа к пользовательским образам. Конструктор образов Azure поддерживает распространение с помощью этой службы, так что вы можете распространять образы в регионы, поддерживаемые коллекциями вычислений Azure.
Коллекция вычислений Azure состоит из следующих компонентов:
- Gallery - Container for multiple images. Коллекция развертывается в одном регионе.
- Image definitions - a conceptual grouping for images.
- Image versions - an image type used for deploying a VM or scale set. Версии образов можно реплицировать в другие регионы, где требуется развернуть виртуальные машины.
Перед распространением в коллекции необходимо создать коллекцию и определение образа (см. раздел Создание коллекции).
Note
Идентификатор версии образа должен отличаться от всех версий образов, которые находятся в существующей коллекции вычислений Azure.
{
"type": "SharedImage",
"galleryImageId": "<resource ID>",
"runOutputName": "<name>",
"artifactTags": {
"<name>": "<value>",
"<name>": "<value>"
}
}
Ниже приведен пример использования replicationRegions поля для распространения в коллекцию вычислений Azure.
Note
replicationRegions не рекомендуется использовать для дистрибутивов коллекций, так как targetRegions обновляется свойство. For more information, see targetRegions.
Distribute: targetRegions
Ниже приведен пример использования поля targetRegions для распространения в коллекцию вычислений Azure.
"distribute": [
{
"type": "SharedImage",
"galleryImageId": "<resource ID>",
"runOutputName": "<name>",
"artifactTags": {
"<name>": "<value>",
"<name>": "<value>"
},
"targetRegions": [
{
"name": "eastus",
"replicaCount": 2,
"storageAccountType": "Standard_ZRS"
},
{
"name": "eastus2",
"replicaCount": 3,
"storageAccountType": "Premium_LRS"
}
]
},
]
Свойства распространения для коллекций:
type - sharedImage
galleryImageId – ID of the Azure Compute Gallery, this property can be specified in two formats:
- Автоматическое управление версиями . Построитель образов создает монотонный номер версии для вас, это свойство полезно, если вы хотите сохранить перестроение образов из одного шаблона:
/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/galleries/<sharedImageGalleryName>/images/<imageGalleryName> - Явное управление версиями — вы можете передать номер версии, который должен использовать Конструктор образов. Формат:
/subscriptions/<subscriptionID>/resourceGroups/<rgName>/providers/Microsoft.Compute/galleries/<sharedImageGalName>/images/<imageDefName>/versions/<version - for example: 1.1.1>
- Автоматическое управление версиями . Построитель образов создает монотонный номер версии для вас, это свойство полезно, если вы хотите сохранить перестроение образов из одного шаблона:
runOutputName – unique name for identifying the distribution.
artifactTags - optional user specified key\value tags.
replicationRegions - array of regions for replication. Один из регионов должен быть регионом, в котором развернута коллекция. Добавление регионов означает увеличение времени сборки, так как сборка не завершится до завершения репликации. Это поле устарело по состоянию на API версии 2022-07-01, используйте
targetRegionsпри распространении типа SharedImage.targetRegions - an array of regions for replication. It's newly introduced as part of the 2022-07-01 API and applies only to the
SharedImagetype distribute.excludeFromLatest (optional) - allows you to mark the image version you create not be used as the latest version in the gallery definition, the default is 'false'.
storageAccountType (optional) - AIB supports specifying these types of storage for the image version that is to be created:
- "Standard_LRS"
- "Standard_ZRS","
Note
Если шаблон образа и указанное определение образа (image definition) находятся в разных расположениях, будет предоставлено дополнительное время для создания образов. В настоящее время Конструктор образов не содержит параметра location для ресурса версии образа, он будет взят из родительского объекта image definition. Например, если определение образа находится в регионе westus и требуется реплицировать версию образа в eastus, BLOB-объект будет скопирован в westus из этого региона, и в регионе westus будет создан ресурс версии образа с последующей репликацией в eastus. Чтобы избежать дополнительного времени репликации, убедитесь, что image definition и шаблон образа находятся в одном расположении.
versioning
The versioning property is for the sharedImage distribute type only. Это перечисление с двумя возможными значениями:
- latest - New strictly increasing schema per design
- source - Schema based upon the version number of the source image.
Схема нумерирования версий по умолчанию .latest Последняя схема имеет дополнительное свойство "основной", указывающее основную версию, в которой создается последняя версия.
Note
Существующая логика создания версий для sharedImage распространения устарела. Предоставляются два новых варианта: монотонно увеличивая версии, которые всегда являются последней версией в коллекции, и версии, созданные на основе номера версии исходного образа. Перечисление, указывающее схему создания версий, позволяет расширяться в будущем с дополнительными схемами создания версий.
"distribute": [
"versioning": {
"scheme": "Latest",
"major": 1
}
]
versioning properties:
-
scheme - Generate new version number for distribution.
LatestилиSourceдва возможных значения. -
major - Specifies the major version under which to generate the latest version. Применимо только в том случае, если
schemeзадано значениеLatest. Например, в коллекции со следующими версиями: 0.1.1, 0.1.2, 1.0.0, 1.0.1, 1.1.0, 1.1.1, 1.2.0, 2.0.0, 2.0.1, 2.1.0- При использовании основного не заданного или основного набора 2
Latestсхема создает версию 2.1.1. - При использовании основного набора 1 последняя схема создает версию 1.2.1
- При использовании основного набора 0 последняя схема создает версию 0.1.3.
- При использовании основного не заданного или основного набора 2
Distribute: VHD
Вы можете записать результат на виртуальный жесткий диск. Затем этот виртуальный жесткий диск можно копировать, использовать для публикации в Azure MarketPlace или использовать с Azure Stack.
{
"type": "VHD",
"runOutputName": "<VHD name>",
"artifactTags": {
"<name>": "<value>",
"<name>": "<value>"
}
}
Поддержка ОС: Windows и Linux.
Параметры распространения на VHD:
- type - VHD.
- runOutputName – unique name for identifying the distribution.
- tags - Optional user specified key value pair tags.
Конструктор образов Azure не разрешает пользователю указывать расположение учетной записи хранения, но вы можете запросить состояние runOutputs, чтобы получить это расположение.
az resource show \
--ids "/subscriptions/$subscriptionId/resourcegroups/<imageResourceGroup>/providers/Microsoft.VirtualMachineImages/imageTemplates/<imageTemplateName>/runOutputs/<runOutputName>" | grep artifactUri
Note
После создания VHD необходимо как можно скорее скопировать его в другое расположение. VHD хранится в учетной записи хранения во временной группе ресурсов, созданной при отправке шаблона образа в службу "Конструктор образов виртуальных машин Azure". Если вы удалите этот шаблон образа, VHD будет утерян.
В следующем формате JSON образ передается в виде виртуального жесткого диска в пользовательскую учетную запись хранения.
"distribute": [
{
"type": "VHD",
"runOutputName": "<VHD name>",
"artifactTags": {
"<name>": "<value>",
"<name>": "<value>"
},
"uri": "<replace with Azure storage URI>"
}
]
VHD распределяет свойства:
uri - Optional Azure Storage URI for the distributed VHD blob. Не следует использовать значение по умолчанию (пустая строка), в котором VHD будет опубликован в учетной записи хранения в промежуточной группе ресурсов.
Properties: optimize
Это optimize свойство можно включить при создании образа виртуальной машины и позволяет оптимизации виртуальных машин повысить время создания образа.
- vmBoot: A configuration related to the booting process of the virtual machine (VM), used to control optimizations that can improve boot time or other performance aspects.
- состояние: состояние функции оптимизации загрузки в пределах
vmBootзначения,Enabledуказывающее, что функция включена для улучшения времени создания образа.
Дополнительные сведения см. в статье "Оптимизация виртуальных машин для образов коллекции" с помощью построителя образов виртуальных машин Azure.
Properties: source
В разделе source содержатся сведения об исходном образе, который будет использоваться Конструктором образов. Azure Image Builder поддерживает только обобщенные образы в качестве исходных образов, специализированные образы в настоящее время не поддерживаются.
Для API должно быть задано значение SourceType, определяющее источник для сборки образа. В настоящее время существует три типа:
- PlatformImage — указывает, что источником является образ Marketplace;
- ManagedImage — используется при запуске из обычного управляемого образа.
- SharedImageVersion — указывается, когда в качестве источника используется версия образа из Коллекции вычислений Azure.
Note
When using existing Windows custom images, you can run the Sysprep command up to three times on a single Windows 7 or Windows Server 2008 R2 image, or 1001 times on a single Windows image for later versions; for more information, see the sysprep documentation.
PlatformImage source
Конструктор образов Azure поддерживает образы Windows Server, клиента Windows и Linux из Azure Marketplace. Полный список см. в статье Сведения о Конструкторе образов виртуальных машин Azure.
"source": {
"type": "PlatformImage",
"publisher": "Canonical",
"offer": "UbuntuServer",
"sku": "18.04-LTS",
"version": "latest"
}
Здесь используются те же свойства, что и при создании виртуальных машин. Чтобы получить список свойств, выполните в интерфейсе командной строки Azure следующую команду.
az vm image list -l westus -f UbuntuServer -p Canonical --output table --all
В качестве значения версии можно указать latest, так как версия определяется при сборке образа, а не при отправке шаблона. Если эта функциональная возможность используется с назначением "Коллекция вычислений Azure", можно не отправлять шаблон повторно, а перезапускать сборку образа через определенные интервалы, чтобы ваши образы воссоздавались из самых последних образов.
Поддержка сведений о плане размещения на рынке
Можно также указать сведения о плане, например:
"source": {
"type": "PlatformImage",
"publisher": "RedHat",
"offer": "rhel-byos",
"sku": "rhel-lvm75",
"version": "latest",
"planInfo": {
"planName": "rhel-lvm75",
"planProduct": "rhel-byos",
"planPublisher": "redhat"
}
}
ManagedImage source
Задает в качестве исходного образа существующий управляемый образ универсального виртуального жесткого диска или виртуальной машины.
Note
Исходный управляемый образ должен иметь поддерживаемую ОС и находиться в той же подписке и регионе, что и ваш шаблон Конструктора образов виртуальных машин Azure.
"source": {
"type": "ManagedImage",
"imageId": "/subscriptions/<subscriptionId>/resourceGroups/{destinationResourceGroupName}/providers/Microsoft.Compute/images/<imageName>"
}
Идентификатор imageId должен быть идентификатором ResourceId управляемого образа. Для получения списка доступных образов используйте команду az image list.
SharedImageVersion source
Задает в качестве исходного образа существующую версию образа в Коллекции вычислений Azure.
Note
Исходная версия общего образа должна иметь поддерживаемую ОС, а версия образа должна находиться в том же регионе, что и шаблон Конструктора образов виртуальных машин Azure. В противном случае следует реплицировать версию образа в регион шаблона Конструктора образов.
"source": {
"type": "SharedImageVersion",
"imageVersionId": "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.Compute/galleries/<sharedImageGalleryName>/images/<imageDefinitionName/versions/<imageVersion>"
}
- imageVersionId — идентификатор ресурса шаблона ARM версии образа. Если имя версии образа является "последней", версия вычисляется при сборке образа. Он
imageVersionIdдолжен бытьResourceIdверсией образа. Для вывода списка версий образа используйте команду az sig image-version list.
Следующий код JSON задает исходный образ как изображение, хранящееся в общей коллекции direct.
Note
В настоящее время общая коллекция direct находится в предварительной версии.
source: {
"type": "SharedImageVersion",
"imageVersionId": "<replace with resourceId of the image stored in the Direct Shared Gallery>"
},
Следующий код JSON задает исходный образ как последнюю версию образа для образа, хранящегося в коллекции вычислений Azure.
"properties": {
"source": {
"type": "SharedImageVersion",
"imageVersionId": "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/galleries/<azureComputeGalleryName>/images/<imageDefinitionName>/versions/latest"
}
},
SharedImageVersion properties:
imageVersionId - ARM template resource ID of the image version. Если имя версии образа имеет значение "последняя", версия вычисляется при выполнении сборки образа.
Properties: stagingResourceGroup
Свойство stagingResourceGroup содержит сведения о промежуточной группе ресурсов, которую служба Image Builder создает для использования во время процесса сборки образа.
stagingResourceGroup — необязательное свойство для тех, кому нужен более строгий контроль над группой ресурсов, созданной Конструктором образов при сборке образа. Вы можете создать собственную группу ресурсов и указать ее в разделе stagingResourceGroup или задать Конструктору образов задачу создать ее от вашего имени.
Important
Промежуточная группа ресурсов, указанная не может быть связана с другим шаблоном образа, должна быть пустой (без ресурсов внутри), в том же регионе, что и шаблон изображения, и иметь "Участник" или "Владелец" RBAC, примененный к удостоверению, назначенному ресурсу шаблона образа Azure Image Builder. Построитель образов проверяет теги промежуточной группы ресурсов с ключами imageTemplateResourceGroupName и imageTemplateName определяет, использует ли какой-либо шаблон образа промежуточную группу ресурсов. Если эти теги существуют до отправки шаблона изображения или они не соответствуют работающему шаблону образа во время сборки образа, операция завершится ошибкой.
"properties": {
"stagingResourceGroup": "/subscriptions/<subscriptionID>/resourceGroups/<stagingResourceGroupName>"
}
Сценарии создания шаблонов
Поле stagingResourceGroup остается пустым
stagingResourceGroupЕсли свойство не указано или не указано с пустой строкой, служба Image Builder создает промежуточную группу ресурсов с соглашением об имени по умолчанию "IT_**". Промежуточная группа ресурсов имеет теги по умолчанию, примененные к нему:createdBy, ,imageTemplateNameimageTemplateResourceGroupName. Кроме того, RBAC по умолчанию применяется к удостоверению, назначенному ресурсу шаблона Конструктора образов Azure, который является участником.Свойство stagingResourceGroup указывается с существующей группой ресурсов
stagingResourceGroupЕсли свойство указано с группой ресурсов, которая существует, служба построителя образов проверяет, что группа ресурсов не связана с другим шаблоном изображения, пуста (без ресурсов внутри), в том же регионе, что и шаблон изображения, и имеет RBAC "Участник" или "Владелец", примененный к удостоверению, назначенному ресурсу шаблона образа Конструктора образов Azure. Если какие-либо из указанных выше требований не выполнены, возникает ошибка. В промежуточной группе ресурсов добавлены следующие теги:usedBy,imageTemplateName.imageTemplateResourceGroupNameСуществующие теги не удаляются.
Important
Вам потребуется назначить роль участника группе ресурсов для субъекта-службы, соответствующего первому приложению Конструктора образов Azure при попытке указать существующую группу ресурсов и виртуальную сеть в службе построителя образов Azure с исходным изображением Windows. Инструкции по назначению роли участника группе ресурсов см. в следующей документации по устранению неполадок построителя образов Azure: ошибка авторизации
Свойство stagingResourceGroup указывается с несуществующей группой ресурсов
stagingResourceGroupЕсли свойство указано с группой ресурсов, которая не существует, служба Конструктора образов создает промежуточную группу ресурсов с именем, указанным в свойствеstagingResourceGroup. Если указанное имя не соответствует требованиям Azure к именованию групп ресурсов, система выдаст ошибку. Промежуточная группа ресурсов имеет теги по умолчанию, примененные к нему:createdBy, ,imageTemplateNameimageTemplateResourceGroupName. По умолчанию удостоверение, назначенное ресурсу шаблона образа Конструктора образов Azure, применяет к нему RBAC участника в группе ресурсов.
Template deletion
Все промежуточные группы ресурсов, созданные службой Конструктора образов, будут удалены после удаления шаблона образа. Будут удалены промежуточные группы ресурсов, указанные в свойстве stagingResourceGroup, но не существующие до сборки образа.
Если Конструктор образов не создал промежуточную группу ресурсов, но создал ресурсы в этой группе, такие ресурсы будут удалены после удаления шаблона образа, если у службы Конструктора образов есть соответствующие разрешения или роли, требуемые для удаления ресурсов.
Properties: validate
Свойство validate можно использовать для проверки образов платформы и любых настраиваемых образов, создаваемых независимо от того, использовали ли вы для их создания Конструктор образов Azure.
Конструктор образов Azure поддерживает режим "Только проверка источника", который можно задать с помощью свойства sourceValidationOnly. Если для свойства sourceValidationOnly задано значение true, образ, указанный в разделе source, будет проверено напрямую. Для создания и проверки настроенного образа отдельная сборка выполняться не будет.
Свойство inVMValidations принимает список проверяющих средств управления, которые будут выполняться в образе. Построитель образов Azure поддерживает проверки файлов, PowerShell и Shell.
Свойство continueDistributeOnFailure отвечает за распространение выходных образов при сбое проверки. По умолчанию, если проверка завершается ошибкой, а для этого свойства задано значение false, выходные образы не будут распространяться. Если проверка завершится сбоем, а для этого поля задано значение true, выходные образы будут распространяться. Используйте этот параметр с осторожностью, так как его использование может привести к распространению образов с ошибкой. При использовании любого из значений (true или false) запуск образа завершится сбоем при сбое проверки. Это свойство не влияет на успешность проверки.
Применяя validate, помните следующие правила.
- Можно использовать несколько средств проверки
- Проверяющие элементы управления выполняются в порядке, указанном в шаблоне.
- В случае сбоя одного из проверяющих элементов управления происходит сбой всего компонента проверки и выводится сообщение об ошибке.
- Рекомендуется тщательно протестировать скрипт, прежде чем использовать его в шаблоне. Гораздо проще отладить скрипт на собственной виртуальной машине.
- Не включайте в скрипты конфиденциальные данные.
- The script locations need to be publicly accessible, unless you're using MSI.
Использование свойства validate для проверки образов Windows:
{
"properties":{
"validate":{
"continueDistributeOnFailure":false,
"sourceValidationOnly":false,
"inVMValidations":[
{
"type":"File",
"destination":"string",
"sha256Checksum":"string",
"sourceUri":"string"
},
{
"type":"PowerShell",
"name":"test PowerShell validator inline",
"inline":[
"<command to run inline>"
],
"validExitCodes":"<exit code>",
"runElevated":"<true or false>",
"runAsSystem":"<true or false>"
},
{
"type":"PowerShell",
"name":"<name>",
"scriptUri":"<path to script>",
"runElevated":"<true false>",
"sha256Checksum":"<sha256 checksum>"
}
]
}
}
}
inVMValidations свойства:
type – PowerShell.
name - name of the validator
scriptUri - URI of the PowerShell script file.
inline – array of commands to be run, separated by commas.
validExitCodes – Optional, valid codes that can be returned from the script/inline command, this avoids reported failure of the script/inline command.
runElevated – Optional, boolean, support for running commands and scripts with elevated permissions.
sha256Checksum - Value of sha256 checksum of the file, you generate this locally, and then Image Builder will checksum and validate.
To generate the sha256Checksum, using a PowerShell on Windows Get-Hash
Использование свойства validate для проверки образов Linux:
{
"properties": {
"validate": {
"continueDistributeOnFailure": false,
"sourceValidationOnly": false,
"inVMValidations": [
{
"type": "Shell",
"name": "<name>",
"inline": [
"<command to run inline>"
]
},
{
"type": "Shell",
"name": "<name>",
"scriptUri": "<path to script>",
"sha256Checksum": "<sha256 checksum>"
},
{
"type": "File",
"destination": "string",
"sha256Checksum": "string",
"sourceUri": "string"
}
]
}
}
}
inVMValidations свойства:
type – Shell or File specified as the validation type to be performed.
name - name of the validator
scriptUri - URI of the script file
inline - array of commands to be run, separated by commas.
sha256Checksum - Value of sha256 checksum of the file, you generate this locally, and then Image Builder will checksum and validate.
Чтобы сформировать sha256Checksum, откройте окно терминала в Mac/Linux и выполните следующую команду:
sha256sum <fileName>destination - Destination of the file.
sha256Checksum - Specifies the SHA256 checksum of the file.
sourceUri - The source URI of the file.
Properties: vmProfile
vmSize (optional)
Конструктор образов будет по умолчанию использовать размер SKU Standard_D1_v2 для образов 1-го поколения и Standard_D2ds_v4 — для образов 2-го поколения. Поколение соответствует образу, указанному в source. Вы можете переопределить vmSize по следующим причинам:
- Выполнение настроек, требующих большего объема памяти, ЦП и обработки больших файлов (ГБ).
- При выполнении сборок Windows следует использовать "Standard_D2_v2" или эквивалентный размер виртуальной машины.
- Require VM isolation.
- Настройте образ, для которого требуется определенное оборудование. Например, для виртуальной машины с GPU нужно указать размер виртуальной машины с GPU.
- Require end to end encryption at rest of the build VM, you need to specify the support build VM size that doesn't use local temporary disks.
osDiskSizeGB
По умолчанию Конструктор образов не будет изменять размер образа, а будет использовать размер исходного образа. You can optionally only increase the size of the OS Disk (Win and Linux), and a value of 0 means leaving the same size as the source image. Размер диска ОС нельзя уменьшить до размера, меньшего, чем у исходного образа.
vnetConfig (optional)
Если свойства виртуальной сети не указаны, построитель образов создает собственную виртуальную сеть, общедоступный IP-адрес и группу безопасности сети (NSG). Общедоступный IP-адрес используется для обмена данными между службой и виртуальной машиной сборки. Если вы не хотите указывать общедоступный IP-адрес или хотите, чтобы Конструктор образов мог обращаться к существующим ресурсам вашей виртуальной сети, таким как серверы конфигурации (DSC, Chef, Puppet, Ansible) и общим папкам, вы можете указать виртуальную сеть. For more information, review the networking documentation.
"vnetConfig": {
"subnetId": "/subscriptions/<subscriptionID>/resourceGroups/<vnetRgName>/providers/Microsoft.Network/virtualNetworks/<vnetName>/subnets/<subnetName1>",
"containerInstanceSubnetId": "/subscriptions/<subscriptionID>/resourceGroups/<vnetRgName>/providers/Microsoft.Network/virtualNetworks/<vnetName>/subnets/<subnetName2>",
"proxyVmSize": "<vmSize>"
}
subnetId
Идентификатор ресурса предварительно существующей подсети, в которой развернута виртуальная машина сборки и виртуальная машина проверки.
containerInstanceSubnetId (optional)
Resource ID of a pre-existing subnet on which Azure Container Instance (ACI) is deployed for Isolated Builds. Если это поле не указано, то временный виртуальная сеть вместе с подсетями и группами безопасности сети развертывается в промежуточной группе ресурсов в дополнение к другим сетевым ресурсам (частная конечная точка, Приватный канал служба, Azure Load Balancer и виртуальная машина прокси-сервера) для включения связи между ACI и виртуальной машиной сборки.
[Это свойство доступно только в версиях API или более новых, хотя существующие шаблоны, созданные с использованием более ранних 2024-02-01 версий API, можно обновить, чтобы указать это свойство.]
Это поле можно указать только в том случае, если subnetId он также указан и должен соответствовать следующим требованиям:
- Эта подсеть должна находиться в той же виртуальная сеть, что и подсеть, указанная в
subnetId. - Эта подсеть не должна совпадать с подсетью, указанной в
subnetId. - Эту подсеть необходимо делегировать службе ACI, чтобы ее можно было использовать для развертывания ресурсов ACI. You can read more about subnet delegation for Azure services here. ACI specific subnet delegation information is available here.
- Эта подсеть должна разрешать исходящий доступ к Интернету и подсети, указанной в
subnetId. Эти доступы необходимы для подготовки ACI, и он может взаимодействовать с виртуальной машиной сборки для выполнения настроек или проверок. В другом конце подсеть, указанная вsubnetIdэтой подсети, должна разрешать входящий доступ из этой подсети. Как правило, правила безопасности по умолчанию групп безопасности сети Azure (NSG) разрешают эти доступы. Однако при добавлении дополнительных правил безопасности в группы безопасности группы безопасности необходимо разрешить следующие доступы:- Исходящий доступ из подсети, указанной в
containerInstanceSubnetId:- В Интернет через порт 443 (для подготовки образа контейнера).
- В Интернет через порт 445 (для подключения общей папки из служба хранилища Azure).
- Для подсети, указанной в
subnetIdпорту 22 (для ssh/Linux) и порта 5986 (для WinRM/Windows) (для подключения к виртуальной машине сборки).
- Входящий доступ к подсети, указанной в
subnetId:- Для порта 22 (для ssh/Linux) и порта 5986 (для WinRM/Windows) из подсети, указанной в
containerInstanceSubnetId(для ACI для подключения к виртуальной машине сборки).
- Для порта 22 (для ssh/Linux) и порта 5986 (для WinRM/Windows) из подсети, указанной в
- Исходящий доступ из подсети, указанной в
- The template identity must have permission to perform 'Microsoft.Network/virtualNetworks/subnets/join/action' action on this subnet's scope. You can read more about Azure permissions for Networking here.
proxyVmSize (optional)
Размер виртуальной машины прокси-сервера, используемой для передачи трафика на виртуальную машину сборки и проверку виртуальной машины. Это поле не должно быть указано, если containerInstanceSubnetId он указан, так как в этом случае виртуальная машина прокси-сервера не развертывается. Опустить или указать пустую строку, чтобы использовать значение по умолчанию (Standard_A1_v2).
Properties: autoRun
Свойство можно использовать autoRun для управления тем, должен ли процесс сборки шаблона образа автоматически запускаться при создании шаблона. Это перечисление с двумя возможными значениями:
- Enabled - Auto run is enabled, so your image template build process will automatically start when the template is created.
- Disabled - Auto run is disabled, so you will have to manually start the image build process after the template is created.
"properties": {
"autoRun": {
"state": "Enabled"
}
}
Note
When you set autoRun to "Enabled," the image build process runs once upon template creation. Это гарантирует, что начальная сборка образа выполняется легко. Однако он не предоставляет согласованные и текущие сборки образов. Для согласованных и текущих сборок образов, выполняемых после обновления шаблона образа, см. инструкции по настройке автоматической сборки образа с помощью триггеров построителя образов Azure.
В отличие от autoRunавтоматического создания образа с помощью ресурса триггера построителя образов Azure, сборки образов выполняются согласованно. При изменении шаблона служба Конструктора образов Azure автоматически активирует процесс сборки образа.
Выберите autoRun немедленное создание образа при создании шаблона. Выберите автоматическое создание образа, если требуется постоянная согласованность в сборках образов. Рассмотрите конкретные требования и используйте соответствующий вариант на основе рабочего процесса.
Properties: managedResourceTags
Свойство можно использовать managedResourceTags для применения тегов к ресурсам, создаваемым службой Azure Image Builder в промежуточной группе ресурсов во время сборки образа. Дополнительные сведения о промежуточной группе ресурсов см. в разделе "Обзор построителя образов Azure"
"properties": {
"managedResourceTags": {
"tag1": "value1",
"tag2": "value2"
}
}
Операции с шаблонами образов
Запуск сборки образа
Чтобы запустить сборку, необходимо вызвать командлет Run в ресурсе шаблона образа, примеры команд run:
Invoke-AzResourceAction -ResourceName $imageTemplateName -ResourceGroupName $imageResourceGroup -ResourceType Microsoft.VirtualMachineImages/imageTemplates -ApiVersion "2023-07-01" -Action Run -Force
az resource invoke-action \
--resource-group $imageResourceGroup \
--resource-type Microsoft.VirtualMachineImages/imageTemplates \
-n helloImageTemplateLinux01 \
--action Run
Отмена сборки образа
Если вы запускаете сборку образа, которая, по вашему мнению, некорректна, ожидает ввода пользователем данных или, по вашему мнению, никогда не завершится успешно, вы можете отменить сборку.
Сборку можно отменить в любое время. Если этап распространения запущен, вы все равно можете отменить, но вам нужно очистить все образы, которые могут не быть завершены. The cancel command doesn't wait for cancel to complete, monitor lastrunstatus.runstate for canceling progress, using these status commands.
Примеры команд cancel могут выглядеть так:
Invoke-AzResourceAction -ResourceName $imageTemplateName -ResourceGroupName $imageResourceGroup -ResourceType Microsoft.VirtualMachineImages/imageTemplates -ApiVersion "2023-07-01" -Action Cancel -Force
az resource invoke-action \
--resource-group $imageResourceGroup \
--resource-type Microsoft.VirtualMachineImages/imageTemplates \
-n helloImageTemplateLinux01 \
--action Cancel
Next steps
В библиотеке GitHub в разделе Конструктора образов Azure имеются примеры JSON-файлов для разных сценариев.