Создание шаблона JSON bicep или шаблона ARM для Конструктора образов Azure
Применимо к: ✔️ Виртуальные машины Linux ✔️ Виртуальные машины Windows ✔️ Гибкие масштабируемые наборы
Конструктор образов Azure использует файл Bicep или JSON-файл шаблона ARM для передачи сведений в службу Конструктора образов. В этой статье мы рассмотрим разделы файлов, чтобы вы могли создать собственные. Сведения о последних версиях API см. в справочнике по шаблонам. Примеры полных JSON-файлов см. в разделе GitHub, посвященном Конструктору образов виртуальных машин Azure.
Базовый формат:
{
"type": "Microsoft.VirtualMachineImages/imageTemplates",
"apiVersion": "2022-02-14",
"location": "<region>",
"tags": {
"<name>": "<value>",
"<name>": "<value>"
},
"identity": {},
"properties": {
"buildTimeoutInMinutes": <minutes>,
"customize": [],
"distribute": [],
"source": {},
"stagingResourceGroup": "/subscriptions/<subscriptionID>/resourceGroups/<stagingResourceGroupName>",
"validate": {},
"vmProfile": {
"vmSize": "<vmSize>",
"proxyVmSize": "<vmSize>",
"osDiskSizeGB": <sizeInGB>,
"vnetConfig": {
"subnetId": "/subscriptions/<subscriptionID>/resourceGroups/<vnetRgName>/providers/Microsoft.Network/virtualNetworks/<vnetName>/subnets/<subnetName>"
},
"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>",
...
]
}
}
}
Тип и версия API
type
— это тип ресурса, который должен быть Microsoft.VirtualMachineImages/imageTemplates
. apiVersion
со временем будет меняться по мере изменений API. См. статью Новые возможности Конструктора образов виртуальных машин Azure, чтобы узнать обо всех основных изменениях API и обновлениях функций для службы Конструктора образов виртуальных машин Azure
Расположение
Расположение — это регион, в котором создается пользовательский образ. Поддерживаются следующие регионы:
- Восточная часть США
- восточная часть США 2
- центрально-западная часть США
- западная часть США
- западная часть США 2
- Западная часть США — 3
- Центрально-южная часть США
- Северная Европа
- Западная Европа
- Юго-Восточная Азия
- Australia Southeast
- Восточная Австралия
- южная часть Соединенного Королевства
- западная часть Соединенного Королевства
- Brazil South
- Центральная Канада
- Центральная Индия
- Центральная часть США
- Центральная Франция
- Центрально-Западная Германия
- Восточная Япония
- Центрально-северная часть США
- Восточная Норвегия;
- Северная Швейцария
- Западная Индия (Jio)
- Северная часть ОАЭ;
- Восточная Азия
- Республика Корея, центральный регион
- Северная часть ЮАР;
- Центральный Катар
- USGov Аризона (общедоступная предварительная версия);
- USGov Вирджиния (общедоступная предварительная версия).
- Северный Китай 3 (общедоступная предварительная версия)
Важно!
Зарегистрируйте возможность Microsoft.VirtualMachineImages/FairfaxPublicPreview
, чтобы получить доступ к общедоступной предварительной версии Конструктора образов Azure в регионах Azure для государственных организаций (USGov Аризона и USGov Вирджиния).
Важно!
Зарегистрируйте функцию Microsoft.VirtualMachineImages/MooncakePublicPreview
для доступа к общедоступной предварительной версии Конструктора образов Azure в регионе Северный Китай 3.
Чтобы получить доступ к общедоступной предварительной версии Конструктора образов виртуальных машин Azure в регионах Azure для государственных организаций (USGov Аризона и USGov Вирджиния), необходимо зарегистрировать функцию Microsoft.VirtualMachineImages/FairfaxPublicPreview. Для этого выполните следующую команду в PowerShell или Azure CLI:
Register-AzProviderPreviewFeature -ProviderNamespace Microsoft.VirtualMachineImages -Name FairfaxPublicPreview
Чтобы получить доступ к общедоступной предварительной версии Конструктора образов виртуальных машин Azure в регионе Северный Китай 3, необходимо зарегистрировать компонент Microsoft.VirtualMachineImages/MooncakePublicPreview . Для этого выполните следующую команду в PowerShell или Azure CLI:
Register-AzProviderPreviewFeature -ProviderNamespace Microsoft.VirtualMachineImages -Name MooncakePublicPreview
Местонахождение данных
Служба "Конструктор образов виртуальных машин Azure" не хранит и не обрабатывает данные клиентов за пределами регионов со строгими требованиями к месту расположения данных в пределах одного региона, когда клиент запрашивает сборку в этом регионе. При сбое службы для регионов с требованиями к месту расположения данных необходимо создать файлы или шаблоны Bicep в другом регионе и географическом регионе.
Избыточность в пределах зоны
Дистрибутив поддерживает избыточность между зонами, виртуальные жесткие диски распределяются в учетную запись хранения с избыточностью между зонами по умолчанию, а версия Коллекции вычислений Azure (прежнее название — Общая коллекция образов) будет поддерживать тип хранилища ZRS, если он указан.
Теги
Теги — это пары "ключ — значение", которые вы можете указать для создаваемого образа.
Идентификация
Добавить назначаемые пользователем удостоверения можно двумя способами, описанными ниже.
Назначаемое пользователем удостоверение для ресурса шаблона образа Конструктора образов виртуальных машин 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 должна быть назначена роль "Оператор управляемого удостоверения" для всех назначаемых пользователем удостоверений в Конструкторе образов, чтобы их можно было связать с виртуальной машиной сборки.
Примечание
Обратите внимание, что для виртуальной машины сборки Конструктора образов можно указать несколько удостоверений, включая удостоверение, созданное для ресурса шаблона образа. По умолчанию удостоверение, созданное для ресурса шаблона образа, не будет добавлено автоматически в виртуальную машину сборки.
"properties": {
"vmProfile": {
"userAssignedIdentities": [
"/subscriptions/<subscriptionID>/resourceGroups/<identityRgName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identityName>"
]
}
}
Назначаемое пользователем удостоверение для виртуальной машины сборки Конструктора образов:
- Поддерживает список, состоящий из одного или нескольких управляемых удостоверений, назначаемых пользователем, для настройки на виртуальной машине.
- Поддерживает сценарии с несколькими подписками (удостоверение создается в одной подписке, а шаблон образа — в другой подписке в том же арендаторе).
- Не поддерживает сценарии с несколькими арендаторами (удостоверение создается в одном арендаторе, а шаблон образа — в другом).
Дополнительные сведения см. на следующих ресурсах:
- Как использовать управляемые удостоверения для ресурсов Azure на виртуальной машине Azure для получения маркера доступа
- Как использовать управляемые удостоверения для ресурсов Azure на виртуальной машине Azure для входа
Свойства: 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 минут. Если вы обнаружили, что достигли значения времени ожидания, просмотрите журналы. Возможно, на этом этапе настройки ожидается какое-нибудь действие, например ввод данных пользователем. Если вам потребуется больше времени для завершения настроек, увеличьте значение buildTimeoutInMinutes
. Но не задавайте слишком высокое значение, так как, возможно, вам придется дожидаться, пока это время истечет, прежде чем появится сообщение об ошибке.
Свойства: customize
Конструктор образов поддерживает несколько настройщиков, которые используются для настройки образа, например выполнения скриптов или перезагрузки серверов.
Применяя customize
, помните следующие правила.
- Вы можете использовать несколько настройщиков
- Настройщики выполняются в порядке, указанном в шаблоне.
- В случае сбоя одного из настройщиков происходит сбой всего компонента настройки и выводится сообщение об ошибке.
- Тщательно протестируйте скрипты, прежде чем использовать их в шаблоне. Отладка скриптов — более простая операция.
- Не включайте в скрипты конфиденциальные данные. Встроенные команды можно просмотреть в определении шаблона образа. Если у вас есть конфиденциальная информация (включая пароли, маркер SAS, маркеры проверки подлинности и т. д.), ее следует включить в скрипты в службе хранилища Azure, где для доступа требуется проверка подлинности.
- Расположения скриптов должны быть общедоступными, если не используется MSI.
Раздел 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
Настройщик Shell
поддерживает выполнение скриптов оболочки в Linux. Скрипты оболочки должны быть общедоступными или необходимо настроить MSI, чтобы Конструктор образов виртуальных машин Azure мог получить к ним доступ.
"customize": [
{
"type": "Shell",
"name": "<name>",
"scriptUri": "<link to script>",
"sha256Checksum": "<sha256 checksum>"
}
],
"customize": [
{
"type": "Shell",
"name": "<name>",
"inline": "<commands to run>"
}
]
Свойства раздела customize:
type — Shell.
name — имя для отслеживания настройки.
scriptUri — универсальный код ресурса (URI) для расположения файла.
inline — массив команд оболочки, разделенных запятыми.
sha256Checksum — значение контрольной суммы sha256 файла; вы формируете его локально, а Конструктор образов затем проверяет его.
Чтобы сформировать sha256Checksum, откройте окно терминала в Mac/Linux и выполните следующую команду:
sha256sum <fileName>
Примечание
Встроенные команды хранятся в определении шаблона образа, поэтому их можно увидеть при выгрузке определения образа. Если у вас есть важные команды или значения (включая пароли, маркер 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:
- type: WindowsRestart.
- restartCommand — команда для выполнения перезапуска (необязательно). Значение по умолчанию —
'shutdown /r /f /t 0 /c \"packer restart\"'
. - restartCheckCommand — команда для проверки успешности перезапуска (необязательно).
- restartTimeout — время ожидания перезапуска, указанное в виде строки величины и единицы измерения. Например,
5m
(5 минут) или2h
(2 часа). Значение по умолчанию —5m
.
Примечание
Настройщик перезапуска Linux отсутствует.
Настройщик PowerShell
Настройщик PowerShell
выполняет встроенные команды и скрипты PowerShell в Windows. Скрипты должны быть общедоступными, чтобы Конструктор образов мог к ним обращаться.
"customize": [
{
"type": "PowerShell",
"name": "<name>",
"scriptUri": "<path to script>",
"runElevated": <true false>,
"sha256Checksum": "<sha256 checksum>"
},
{
"type": "PowerShell",
"name": "<name>",
"inline": "<PowerShell syntax to run>",
"validExitCodes": [<exit code>],
"runElevated": <true or false>
}
]
Свойства раздела customize:
type — PowerShell.
scriptUri — универсальный код ресурса (URI) для расположения файла скрипта PowerShell.
inline — встроенные команды, разделенные запятыми.
validExitCodes — необязательные допустимые коды, которые можно возвращать из скрипта или встроенной команды. Свойство позволяет избежать сбоя скрипта или встроенной команды.
runElevated — необязательное логическое значение для поддержки выполнения команд и скриптов с повышенными привилегиями.
sha256Checksum — создайте контрольную сумму SHA256 локально, укажите значение контрольной суммы в символах нижнего регистра, и конструктор образов проверит контрольную сумму во время развертывания шаблона образа.
Чтобы создать sha256Checksum, используйте командлет Get-FileHash в PowerShell.
Настройщик File
Настройщик File
позволяет Конструктору образов скачивать файлы из репозитория GitHub или службы хранилища Azure. Настройщик доступен как в Linux, так и в Windows. Если у вас есть конвейер сборки образа, который зависит от артефактов сборки, можно установить настройщик File для скачивания из общей папки сборки и переместить артефакты в образ.
"customize": [
{
"type": "File",
"name": "<name>",
"sourceUri": "<source location>",
"destination": "<destination>",
"sha256Checksum": "<sha256 checksum>"
}
]
Свойства настройщика File:
sourceUri — доступная конечная точка хранилища. Это может быть GitHub или служба хранилища Azure. Вы можете загружать только один файл, а не весь каталог. Если необходимо загрузить каталог, используйте сжатый файл, а затем распакуйте его с помощью настройщиков Shell или PowerShell.
Примечание
Если sourceUri является учетной записью хранения Azure, независимо от того, помечен ли blob-объект как общедоступный, необходимо предоставить управляемому удостоверению пользователя разрешения на чтение большого двоичного объекта. Ознакомьтесь с этим примером, чтобы задать разрешения для хранилища.
destination — полный путь к целевому файлу и имя файла. Все указанные пути и подкаталоги должны существовать. Для их предварительной настройки используйте настройщики Shell или PowerShell. Вы можете использовать настройщики скриптов для создания пути.
Настройщик поддерживает каталоги Windows и пути Linux, но с некоторыми отличиями:
- В Linux Конструктор образов может осуществлять запись только по пути /tmp.
- В Windows нет ограничений на используемый путь, но этот путь должен существовать.
Если возникает ошибка при попытке скачать файл или поместить его в указанный каталог, шаг настройки завершится ошибкой, и эта ошибка будет указана в файле customization.log.
Примечание
Настройщик файлов подходит только для скачивания небольших файлов, размером <20 МБ. Для скачивания файлов большего размера используйте скрипт или встроенную команду с кодом для скачивания файлов, например wget
или curl
в Linux, Invoke-WebRequest
в Windows. Для файлов, которые находятся в службе хранилища Azure, убедитесь, что вы назначите удостоверение с разрешениями на просмотр этого файла виртуальной машине сборки, следуя инструкциям в документации, назначаемой пользователем, для виртуальной машины сборки Конструктора образов. Любой файл, который не хранится в Azure, должен быть общедоступным, чтобы конструктор образов Azure мог скачать его.
sha256Checksum — создайте контрольную сумму SHA256 локально, укажите значение контрольной суммы в символах нижнего регистра, и конструктор образов проверит контрольную сумму во время развертывания шаблона образа.
Чтобы создать sha256Checksum, используйте командлет Get-FileHash в PowerShell.
Настройщик WindowsUpdate
Настройщик WindowsUpdate
создан на основе средства подготовки Центра обновления Windows для Packer. Это проект с открытым исходным кодом, поддерживаемый сообществом Packer. Корпорация Майкрософт тестирует и проверяет это средство подготовки с помощью службы Конструктора образов, планируя и дальше исследовать проблемы с этим средством и работать над их устранением. Но этот проект с открытым кодом официально не поддерживается корпорацией Майкрософт. Подробную документацию и справку по данному средству подготовки Центра обновления Windows см. в репозитории проекта.
"customize": [
{
"type": "WindowsUpdate",
"searchCriteria": "IsInstalled=0",
"filters": [
"exclude:$_.Title -like '*Preview*'",
"include:$true"
],
"updateLimit": 20
}
]
Свойства настройщика:
- type — WindowsUpdate.
- searchcriteria — необязательное свойство, определяющее тип устанавливаемых обновлений (например, Recommended или Important). По умолчанию установлено BrowseOnly=0 и IsInstalled=0 (Recommended).
- filters— необязательное свойство, позволяющее указать фильтр для включения или исключения обновлений.
- updateLimit — необязательное свойство; задает, сколько обновлений можно установить (по умолчанию 1000).
Примечание
Настройка Центра обновления Windows может завершиться ошибкой при наличии невыполненных перезапусков Windows или при выполнении установки приложения. Обычно эта ошибка может появиться в customization.log, в System.Runtime.InteropServices.COMException (0x80240016): Exception from HRESULT: 0x80240016
. Мы настоятельно рекомендуем добавить перезагрузку Windows и (или) предоставить приложениям достаточно времени для завершения установки с помощью команд sleep или wait во встроенных командах или сценариях перед запуском Центра обновления Windows.
Generalize
По умолчанию Конструктор образов виртуальных машин Azure также выполняет код deprovision
в конце каждого этапа настройки образа, чтобы подготовить образ к использованию. Подготовка к использованию — это процесс, в котором образ настраивается для многократного использования в целях создания нескольких виртуальных машин. Для виртуальных машин Windows Конструктор образов виртуальных машин Azure использует команду Sysprep. Для Linux Конструктор образов выполняет код waagent -deprovision
.
Команды, которые пользователи конструктора образов должны обобщать, могут не подходить для каждой ситуации, поэтому Конструктор образов Azure позволяет настроить эту команду, если это необходимо.
Если выполняется перенос существующей настройки и вы используете разные команды Sysprep и waagent, вы можете применять универсальные команды Конструктора образов, а в случае сбоя создания виртуальной машины — свои собственные команды Sysprep или waagent.
Если Конструктор образов Azure успешно создает пользовательский образ Windows и вы создаете на его основе виртуальную машину, то обнаружите, что создание виртуальной машины завершается сбоем или не завершается успешно, необходимо ознакомиться с документацией по Windows Server Sysprep Sysprep или отправить запрос в службу поддержки клиентов Windows Server Sysprep, которая может устранить неполадки и сообщить о правильном использовании 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 }
Write-Output '>>> Sysprepping VM ...'
if( Test-Path $Env:SystemRoot\system32\Sysprep\unattend.xml ) {
Remove-Item $Env:SystemRoot\system32\Sysprep\unattend.xml -Force
}
& $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
. Сведения о сборе журналов см. в разделе, посвященном устранению неполадок.
Свойства: distribute
Конструктор образов Azure поддерживает три целевых объекта распространения:
- ManagedImage — управляемый образ.
- sharedImage — Коллекция вычислений Azure.
- VHD — VHD в учетной записи хранения.
Вы можете распространить образ в оба типа целевого объекта в рамках одной конфигурации.
Примечание
Стандартная команда Конструктора образов 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=2021-10-01
Выходные данные:
{
"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"
}
Распространение: managedImage
Выходные данные образа являются управляемым ресурсом образа.
{
"type":"managedImage",
"imageId": "<resource ID>",
"location": "<region>",
"runOutputName": "<name>",
"artifactTags": {
"<name>": "<value>",
"<name>": "<value>"
}
}
Свойства распространения:
- type — managedImage.
- imageId — идентификатор ресурса целевого образа; ожидаемый формат: /subscriptions/<ИД_подписки>/resourceGroups/<имя_целевой_группы_ресурсов>/providers/Microsoft.Compute/images/<имя_образа>.
- location — расположение управляемого образа.
- runOutputName — уникальное имя для идентификации распространения.
- artifactTags — необязательные задаваемые пользователем теги "ключ — значение".
Примечание
Целевая группа ресурсов должна существовать. Если вы хотите распространить образ в другой регион, это увеличит время развертывания.
Распространение: sharedImage
Коллекция вычислений Azure — это новая служба управления образами, которая обеспечивает управление репликацией региона образа, управление версиями и предоставление общего доступа к пользовательским образам. Конструктор образов Azure поддерживает распространение с помощью этой службы, так что вы можете распространять образы в регионы, поддерживаемые коллекциями вычислений Azure.
Коллекция вычислений Azure состоит из следующих компонентов:
- Коллекция — контейнер для нескольких образов. Коллекция развертывается в одном регионе.
- Определения образов — концептуальное группирование образов.
- Версии образов — тип образа, используемый для развертывания виртуальной машины или масштабируемого набора. Версии образов можно реплицировать в другие регионы, где требуется развернуть виртуальные машины.
Перед распространением в коллекции необходимо создать коллекцию и определение образа (см. раздел Создание коллекции).
{
"type": "SharedImage",
"galleryImageId": "<resource ID>",
"runOutputName": "<name>",
"artifactTags": {
"<name>": "<value>",
"<name>": "<value>"
}
}
Следующий код JSON является примером использования replicationRegions
поля для распространения в коллекцию вычислений Azure.
Примечание
replicationRegions
Не рекомендуется использовать для дистрибутивов коллекции, так как targetRegions
свойство обновлено. Дополнительные сведения см. в разделе targetRegions.
Распространение: целевые области
Следующий код JSON является примером использования поля 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 — идентификатор Коллекции вычислений Azure; это свойство можно указать в двух форматах:
- Автоматическое управление версиями. Конструктор образов создает монотонный номер версии. Это свойство полезно, если вы хотите сохранить перестроение образов из одного шаблона: формат:
/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 — уникальное имя для идентификации распространения.
artifactTags — необязательные задаваемые пользователем теги "ключ — значение".
replicationRegions — массив регионов для репликации. Один из регионов должен быть регионом, в котором развернута коллекция. Добавление регионов означает увеличение времени сборки, так как сборка не завершается до завершения репликации. Это поле устарело в версии API 2022-07-01, используйте
targetRegions
при распространении типа SharedImage.targetRegions — массив регионов для репликации. Он недавно появился в рамках API 2022-07-01 и применяется только к типу
SharedImage
распределения.excludeFromLatest (необязательный) — позволяет пометить созданную версию образа как последнюю версию в определении коллекции; значение по умолчанию — false.
storageAccountType (необязательный) — Конструктор образов Azure позволяет указывать следующие типы хранилища для создаваемой версии образа:
- "Standard_LRS"
- "Standard_ZRS","
Примечание
Если шаблон образа и указанное определение образа (image definition
) находятся в разных расположениях, будет предоставлено дополнительное время для создания образов. В настоящее время Конструктор образов не содержит параметра location
для ресурса версии образа, он будет взят из родительского объекта image definition
. Например, если определение образа находится в регионе westus
и требуется реплицировать версию образа в eastus
, BLOB-объект будет скопирован в westus
из этого региона, и в регионе westus
будет создан ресурс версии образа с последующей репликацией в eastus
. Чтобы избежать дополнительного времени репликации, убедитесь, что image definition
и шаблон образа находятся в одном расположении.
управление версиями
Свойство управления версиями предназначено только для sharedImage
типа распространения. Это перечисление с двумя возможными значениями:
- latest — новая строго увеличивающаяся схема для каждого проекта
- source — схема, основанная на номере версии исходного образа.
Схема нумерирования версий по умолчанию — latest
. Последняя схема имеет дополнительное свойство major, которое указывает основную версию, в которой создается последняя версия.
Примечание
Существующая логика создания версий для sharedImage
распространения не рекомендуется. Предоставляются два новых варианта: монотонно увеличивающиеся версии, которые всегда являются последней версией в коллекции, и версии, созданные на основе номера версии исходного образа. Перечисление, указывающее схему создания версии, позволяет в будущем расширяться с помощью дополнительных схем создания версий.
"distribute": [
"versioning": {
"scheme": "Latest",
"major": 1
}
]
свойства управления версиями:
- scheme — создание нового номера версии для распространения.
Latest
илиSource
— это два возможных значения. - major — указывает основную версию, в которой создается последняя версия. Применимо только в том случае,
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.1.2.
- Если для основного задано значение 0, последняя схема создает версию 0.1.3.
- Если для основного не задано значение или для основного задано значение 2, схема
Распространение: VHD
Вы можете записать результат на виртуальный жесткий диск. Затем этот виртуальный жесткий диск можно копировать, использовать для публикации в Azure MarketPlace или использовать с Azure Stack.
{
"type": "VHD",
"runOutputName": "<VHD name>",
"artifactTags": {
"<name>": "<value>",
"<name>": "<value>"
}
}
Поддержка ОС: Windows и Linux.
Параметры распространения на VHD:
- type — VHD.
- runOutputName — уникальное имя для идентификации распространения.
- tags — необязательные задаваемые пользователем теги пар "ключ-значение".
Конструктор образов Azure не разрешает пользователю указывать расположение учетной записи хранения, но вы можете запросить состояние runOutputs
, чтобы получить это расположение.
az resource show \
--ids "/subscriptions/$subscriptionId/resourcegroups/<imageResourceGroup>/providers/Microsoft.VirtualMachineImages/imageTemplates/<imageTemplateName>/runOutputs/<runOutputName>" | grep artifactUri
Примечание
После создания VHD необходимо как можно скорее скопировать его в другое расположение. VHD хранится в учетной записи хранения во временной группе ресурсов, созданной при отправке шаблона образа в службу "Конструктор образов виртуальных машин Azure". Если вы удалите этот шаблон образа, VHD будет утерян.
Следующий код JSON передает образ в виде виртуального жесткого диска в пользовательскую учетную запись хранения.
"distribute": [
{
"type": "VHD",
"runOutputName": "<VHD name>",
"artifactTags": {
"<name>": "<value>",
"<name>": "<value>"
},
"uri": "<replace with Azure storage URI>"
}
]
Свойства распределения виртуальных жестких дисков:
URI — необязательный URI службы хранилища Azure для распределенного большого двоичного объекта VHD. Не используйте значение по умолчанию (пустая строка), в котором виртуальный жесткий диск будет опубликован в учетной записи хранения в промежуточной группе ресурсов.
Свойства: source
В разделе source
содержатся сведения об исходном образе, который будет использоваться Конструктором образов. Конструктор образов Azure поддерживает только обобщенные образы в качестве исходных образов, а специализированные образы в настоящее время не поддерживаются.
Для API должно быть задано значение SourceType
, определяющее источник для сборки образа. В настоящее время существует три типа:
- PlatformImage — указывает, что источником является образ Marketplace;
- ManagedImage — используется при запуске из обычного управляемого образа.
- SharedImageVersion — указывается, когда в качестве источника используется версия образа из Коллекции вычислений Azure.
Примечание
При использовании существующих пользовательских образов Windows можно выполнить команду Sysprep до 3 раз в одном образе Windows 7 или Windows Server 2008 R2 либо 1001 раз в одном образе Windows более поздних версий. Дополнительные сведения см. в документации по Sysprep.
Источник PlatformImage
Конструктор образов 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
Задает в качестве исходного образа существующий управляемый образ универсального виртуального жесткого диска или виртуальной машины.
Примечание
Исходный управляемый образ должен иметь поддерживаемую ОС и находиться в той же подписке и регионе, что и ваш шаблон Конструктора образов виртуальных машин Azure.
"source": {
"type": "ManagedImage",
"imageId": "/subscriptions/<subscriptionId>/resourceGroups/{destinationResourceGroupName}/providers/Microsoft.Compute/images/<imageName>"
}
Идентификатор imageId
должен быть идентификатором ResourceId управляемого образа. Для получения списка доступных образов используйте команду az image list
.
Источник SharedImageVersion
Задает в качестве исходного образа существующую версию образа в Коллекции вычислений Azure.
Примечание
Исходная версия общего образа должна иметь поддерживаемую ОС, а версия образа должна находиться в том же регионе, что и шаблон Конструктора образов виртуальных машин Azure. В противном случае следует реплицировать версию образа в регион шаблона Конструктора образов.
"source": {
"type": "SharedImageVersion",
"imageVersionID": "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.Compute/galleries/<sharedImageGalleryName>/images/<imageDefinitionName/versions/<imageVersion>"
}
- imageVersionId — идентификатор ресурса шаблона ARM версии образа. Если имя версии образа — latest, версия вычисляется при сборке образа. Должен
imageVersionId
быть дляResourceId
версии образа. Для вывода списка версий образа используйте команду az sig image-version list.
Следующий код JSON задает исходный образ как образ, хранящийся в коллекции direct shared.
Примечание
Коллекция Direct Shared в настоящее время доступна в предварительной версии.
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:
imageVersionId — идентификатор ресурса шаблона ARM версии образа. Если имя версии образа — latest, версия вычисляется при сборке образа.
Свойства: stagingResourceGroup
Свойство stagingResourceGroup
содержит сведения о промежуточной группе ресурсов, которую служба Конструктора образов создает для использования в процессе сборки образа. stagingResourceGroup
— необязательное свойство для тех, кому нужен более строгий контроль над группой ресурсов, созданной Конструктором образов при сборке образа. Вы можете создать собственную группу ресурсов и указать ее в разделе stagingResourceGroup
или задать Конструктору образов задачу создать ее от вашего имени.
"properties": {
"stagingResourceGroup": "/subscriptions/<subscriptionID>/resourceGroups/<stagingResourceGroupName>"
}
Сценарии создания шаблонов
Поле stagingResourceGroup остается пустым
stagingResourceGroup
Если свойство не указано или не указано с пустой строкой, служба Конструктора образов создает промежуточную группу ресурсов с соглашением об имени по умолчанию "IT_***". К промежуточной группе ресурсов применяются теги по умолчанию:createdBy
,imageTemplateName
,imageTemplateResourceGroupName
. Кроме того, RBAC по умолчанию применяется к удостоверению, назначенному ресурсу шаблона Конструктора образов Azure, который является участником.Свойство stagingResourceGroup указывается с существующей группой ресурсов
stagingResourceGroup
Если свойство указано с группой ресурсов, которая существует, служба Конструктора образов проверяет, не связана ли группа ресурсов с другим шаблоном образа, пуста (нет ресурсов внутри), находится в том же регионе, что и шаблон образа, и имеет RBAC "Участник" или "Владелец" применен к удостоверению, назначенному ресурсу шаблона образа Конструктора образов Azure. Если какое-либо из вышеупомянутых требований не выполняется, возникает ошибка. В промежуточную группу ресурсов добавлены следующие теги:usedBy
,imageTemplateName
,imageTemplateResourceGroupName
. Существующие теги не удаляются.
Важно!
Вам потребуется назначить роль участник группе ресурсов для субъекта-службы, соответствующей основному приложению Конструктора образов Azure, при попытке указать существующую группу ресурсов и виртуальную сеть для службы Конструктора образов Azure с помощью исходного образа Windows. Инструкции по назначению роли участник группе ресурсов с помощью команды CLI и портала см. в следующей документации Устранение неполадок с конструктором образов Azure для виртуальной машины: ошибка авторизации при создании диска.
Свойство stagingResourceGroup указывается с несуществующей группой ресурсов
stagingResourceGroup
Если свойство указано с группой ресурсов, которая не существует, служба Конструктора образов создает промежуточную группу ресурсов с именем, указанным в свойствеstagingResourceGroup
. Если указанное имя не соответствует требованиям Azure к именованию групп ресурсов, система выдаст ошибку. К промежуточной группе ресурсов применяются теги по умолчанию:createdBy
,imageTemplateName
,imageTemplateResourceGroupName
. По умолчанию к удостоверению, назначенному ресурсу шаблона образа Конструктора образов Azure, применяется RBAC "Участник" в группе ресурсов.
Удаление шаблона
Все промежуточные группы ресурсов, созданные службой Конструктора образов, будут удалены после удаления шаблона образа. Будут удалены промежуточные группы ресурсов, указанные в свойстве stagingResourceGroup
, но не существующие до сборки образа.
Если Конструктор образов не создал промежуточную группу ресурсов, но создал ресурсы в этой группе, такие ресурсы будут удалены после удаления шаблона образа, если у службы Конструктора образов есть соответствующие разрешения или роли, требуемые для удаления ресурсов.
Свойства: проверка
Свойство validate
можно использовать для проверки образов платформы и любых настраиваемых образов, создаваемых независимо от того, использовали ли вы для их создания Конструктор образов Azure.
Конструктор образов Azure поддерживает режим "Только проверка источника", который можно задать с помощью свойства sourceValidationOnly
. Если для свойства sourceValidationOnly
задано значение true, образ, указанный в разделе source
, будет проверено напрямую. Для создания и проверки настроенного образа отдельная сборка выполняться не будет.
Свойство inVMValidations
принимает список проверяющих средств управления, которые будут выполняться в образе. Конструктор образов Azure поддерживает проверяющие элементы управления файлами, PowerShell и оболочки.
Свойство continueDistributeOnFailure
отвечает за распространение выходных образов при сбое проверки. По умолчанию, если проверка завершается ошибкой, а для этого свойства задано значение false, выходные образы не будут распространяться. Если проверка завершится сбоем, а для этого поля задано значение true, выходные образы будут распространяться. Используйте этот параметр с осторожностью, так как его использование может привести к распространению образов с ошибкой. При использовании любого из значений (true или false) запуск образа завершится сбоем при сбое проверки. Это свойство не влияет на успешность проверки.
Применяя validate
, помните следующие правила.
- Можно использовать несколько средств проверки
- Проверяющие элементы управления выполняются в порядке, указанном в шаблоне.
- В случае сбоя одного из проверяющих элементов управления происходит сбой всего компонента проверки и выводится сообщение об ошибке.
- Рекомендуется тщательно протестировать скрипт, прежде чем использовать его в шаблоне. Гораздо проще отладить скрипт на собственной виртуальной машине.
- Не включайте в скрипты конфиденциальные данные.
- Расположения скриптов должны быть общедоступными, если не используется 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 — имя проверяющего элемента управления
scriptUri — универсальный код ресурса (URI) файла сценария PowerShell.
inline – массив подлежащих выполнению команд, разделенных запятыми.
validExitCodes — необязательные допустимые коды, которые могут быть возвращены из скрипта или встроенной команды. Это позволяет избежать сбоя скрипта или встроенной команды.
runElevated — необязательное логическое значение для поддержки выполнения команд и скриптов с повышенными привилегиями.
sha256Checksum — значение контрольной суммы sha256 файла; вы формируете ее локально, а Конструктор образов затем проверяет ее.
Для формирования sha256Checksum используйте командлет PowerShell в 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 — оболочка или файл, указанные в качестве типа проверки, который необходимо выполнить.
name — имя проверяющего элемента управления
scriptUri — URI файла сценария
inline — массив подлежащих выполнению команд, разделенных запятыми.
sha256Checksum — значение контрольной суммы sha256 файла; вы формируете ее локально, а Конструктор образов затем проверяет ее.
Чтобы сформировать sha256Checksum, откройте окно терминала в Mac/Linux и выполните следующую команду:
sha256sum <fileName>
destination — назначение файла.
sha256Checksum — указывает контрольную сумму SHA256 файла.
sourceUri — исходный URI файла.
Свойства: vmProfile
vmSize (необязательное)
Конструктор образов будет по умолчанию использовать размер SKU Standard_D1_v2
для образов 1-го поколения и Standard_D2ds_v4
— для образов 2-го поколения. Поколение соответствует образу, указанному в source
. Вы можете переопределить vmSize по следующим причинам:
- Выполнение настроек, требующих большего объема памяти, ЦП и обработки больших файлов (ГБ).
- При выполнении сборок Windows следует использовать "Standard_D2_v2" или эквивалентный размер виртуальной машины.
- Потребность в изоляции виртуальной машины.
- Настройте образ, для которого требуется определенное оборудование. Например, для виртуальной машины с GPU нужно указать размер виртуальной машины с GPU.
- Требуется сквозное шифрование неактивных виртуальных машин сборки. Необходимо указать размер виртуальной машины сборки, которая не использует локальные временные диски.
osDiskSizeGB
По умолчанию Конструктор образов не будет изменять размер образа, а будет использовать размер исходного образа. Вы можете только увеличить размер диска ОС (Windows и Linux), хотя это необязательно. Значение 0 означает, что будет использоваться размер исходного образа. Размер диска ОС нельзя уменьшить до размера, меньшего, чем у исходного образа.
vnetConfig (необязательное)
Если не указать свойства виртуальной сети, конструктор образов создаст собственную виртуальную сеть, общедоступный IP-адрес и группу безопасности сети (NSG). Общедоступный IP-адрес используется для обмена данными между службой и виртуальной машиной сборки. Если вы не хотите указывать общедоступный IP-адрес или хотите, чтобы Конструктор образов мог обращаться к существующим ресурсам вашей виртуальной сети, таким как серверы конфигурации (DSC, Chef, Puppet, Ansible) и общим папкам, вы можете указать виртуальную сеть. Дополнительные сведения см. в документации по сетям.
"vnetConfig": {
"subnetId": "/subscriptions/<subscriptionID>/resourceGroups/<vnetRgName>/providers/Microsoft.Network/virtualNetworks/<vnetName>/subnets/<subnetName>"
}
Операции с шаблонами образов
Запуск сборки образа
Чтобы запустить сборку, необходимо вызвать командлет Run в ресурсе шаблона образа, примеры команд run
:
Invoke-AzResourceAction -ResourceName $imageTemplateName -ResourceGroupName $imageResourceGroup -ResourceType Microsoft.VirtualMachineImages/imageTemplates -ApiVersion "2021-10-01" -Action Run -Force
az resource invoke-action \
--resource-group $imageResourceGroup \
--resource-type Microsoft.VirtualMachineImages/imageTemplates \
-n helloImageTemplateLinux01 \
--action Run
Отмена сборки образа
Если вы запускаете сборку образа, которая, по вашему мнению, некорректна, ожидает ввода пользователем данных или, по вашему мнению, никогда не завершится успешно, вы можете отменить сборку.
Сборку можно отменить в любое время. Если этап распространения уже начался, вы все равно можете отменить его, но вам нужно очистить все образы, которые могут быть не завершены. Команда Cancel не ждет, когда завершится отмена. Для этого отслеживайте ход отмены в lastrunstatus.runstate
, используя эти команды состояния.
Примеры команд cancel
могут выглядеть так:
Invoke-AzResourceAction -ResourceName $imageTemplateName -ResourceGroupName $imageResourceGroup -ResourceType Microsoft.VirtualMachineImages/imageTemplates -ApiVersion "2021-10-01" -Action Cancel -Force
az resource invoke-action \
--resource-group $imageResourceGroup \
--resource-type Microsoft.VirtualMachineImages/imageTemplates \
-n helloImageTemplateLinux01 \
--action Cancel
Дальнейшие действия
В библиотеке GitHub в разделе Конструктора образов Azure имеются примеры JSON-файлов для разных сценариев.