Устранение неполадок с Конструктором образов виртуальных машин Azure

Область применения: ✔️ Виртуальные машины Linux ✔️ Гибкие масштабируемые наборы

Используйте инструкции из этой статьи для устранения неполадок и решения распространенных проблем, которые могут возникнуть при использовании Конструктора образов виртуальных машин Azure.

Необходимые компоненты

При создании сборки сделайте следующее:

  • Служба "Конструктор образов виртуальных машин Azure" взаимодействует с виртуальной машиной сборки с помощью WinRM или Secure Shell (SSH). Не отключите эти параметры как часть сборки.
  • Построитель образов виртуальной машины создает ресурсы в промежуточной группе ресурсов в рамках сборки. Обязательно убедитесь, что Политика Azure не запрещает Конструктору образов виртуальных машин Azure создавать или использовать необходимые ресурсы.
  • Убедитесь, что Политика Azure не устанавливает непредусмотренные компоненты на виртуальную машину, выполняющую сборку, например расширения Azure.
  • Убедитесь, что Конструктор образов виртуальных машин имеет необходимые разрешения для чтения/записи образов и подключения к учетной записи хранения. Дополнительные сведения см. в документации по разрешениям для Azure CLI или Azure PowerShell.
  • Конструктор образов виртуальной машины завершается ошибкой сборки, если скрипты или встроенные команды завершаются ошибками (коды выхода ненулевого типа). Обязательно протестируйте пользовательские сценарии и убедитесь, что они выполняются без ошибок (код выхода 0) или им нужны данные, введенные пользователем. Дополнительные сведения см. на странице Создание образа Виртуального рабочего стола Azure с помощью Конструктора образов виртуальных машин Azure и PowerShell.
  • Убедитесь, что у вашей подписки достаточно квоты Экземпляры контейнеров Azure.
    • Каждая сборка образа может развернуть до одного временного ресурса экземпляра контейнера Azure (из четырех стандартных ядер) в промежуточной группе ресурсов. Эти ресурсы необходимы для сборок изолированных образов.

Сбои Конструктора образов виртуальных машин Azure могут произойти в двух случаях:

  • Во время отправки шаблона образа
  • Во время сборки образа

Примечание.

Образы с поддержкой CIS (Linux или Windows) в Azure Marketplace, управляемые CIS, могут привести к сбоям сборки со службой Конструктора образов Azure из-за их конфигураций. Например:

  • Образы Windows, защищенные CIS, могут нарушить подключение WinRM, необходимый для сборки AIB.
  • Образы CIS Linux могут завершиться ошибкой chmod +x из-за проблем с разрешениями.

Устранение ошибок отправки шаблона образа

Ошибки отправки шаблона образа возвращаются только при отправке. Журнал ошибок при отправке шаблонов образов не ведется. Если во время отправки происходит ошибка, можно возвратить ошибку, проверив состояние шаблона, в частности, просмотрев ProvisioningState и ProvisioningErrorMessage/provisioningError.

az image builder show --name $imageTemplateName  --resource-group $imageResourceGroup
Get-AzImageBuilderTemplate -ImageTemplateName  <imageTemplateName> -ResourceGroupName <imageTemplateResourceGroup> | Select-Object ProvisioningState, ProvisioningErrorMessage

Примечание.

Для PowerShell необходимо установить модули PowerShell для Конструктора образов.

Важно!

В API версии 2021-10-01 внесены изменения в схему ошибок, которая станет часть каждого будущего выпуска API. При наличии автоматизаций Конструктора образов виртуальных машин Azure обратите внимание на новый вывод ошибок при переходе на API версии 2021-10-01 или более поздней. После перехода на последнюю версию API не рекомендуется возвращаться к более ранней версии, потому что вам придется снова изменить автоматизацию, чтобы создать более раннюю схему ошибок. Мы не планируем снова менять схему ошибок в будущих выпусках.

Вывод ошибок для версии 2020-02-14 и более ранних версий

{
  "code": "ValidationFailed",
  "message": "Validation failed: 'ImageTemplate.properties.source': Field 'imageId' has a bad value: '/subscriptions/subscriptionID/resourceGroups/resourceGroupName/providers/Microsoft.Compute/images/imageName'. Please review  http://aka.ms/azvmimagebuildertmplref  for details on fields requirements in the Image Builder Template."
}

Вывод ошибок для версии 2021-10-01 и более поздних версий

{
  "error": {
    "code": "ValidationFailed",
    "message": "Validation failed: 'ImageTemplate.properties.source': Field 'imageId' has a bad value: '/subscriptions/subscriptionID/resourceGroups/resourceGroupName/providers/Microsoft.Compute/images/imageName'. Please review  http://aka.ms/azvmimagebuildertmplref  for details on fields requirements in the Image Builder Template."
  }
}

В следующих разделах приведены рекомендации по устранению распространенных проблем, возникающих при отправке шаблона образа.

В настоящий момент обновление шаблонов образов не поддерживается

Ошибка

'Conflict'. Details: Update/Upgrade of image templates is currently not supported

Причина

Шаблон уже существует.

Решение

Если вы отправите шаблон конфигурации образа, и отправка завершается сбоем, по-прежнему присутствует неудачный артефакт шаблона. Удалите шаблон, который не удалось отправить.

Переназначение MSI на шаблонах изображений

Ошибка

The assigned managed identity cannot be used. Please remove the existing one and re-assign a new identity. For more troubleshooting steps go to https://aka.ms/azvmimagebuilderts.

Причина

Существуют случаи, когда управляемые удостоверения службы (MSI), назначенные шаблону образа, нельзя использовать:

Решение

Используйте Azure CLI для сброса удостоверения в шаблоне образа. Убедитесь, что azure CLI обновляется до версии 2.45.0 или более поздней.

Удаление управляемого удостоверения из шаблона построителя целевых образов

az image builder identity remove -g <template resource group> -n <template name> --user-assigned <identity resource id>

Повторно назначьте удостоверение шаблону построителя целевых образов

az image builder identity assign -g <template rg> -n <template name> --user-assigned <identity resource id>

Операция ресурса завершена с состоянием подготовки терминала "Сбой"

Ошибка

Microsoft.VirtualMachineImages/imageTemplates 'helloImageTemplateforSIG01' failed with message '{
  "status": "Failed",
  "error": {
    "code": "ResourceDeploymentFailure",
    "message": "The resource operation completed with terminal provisioning state 'Failed'.",
    "details": [
      {
        "code": "InternalOperationError",
        "message": "Internal error occurred."

Причина

В большинстве случаев сбой при развертывании ресурса возникает из-за отсутствия разрешений. Эта ошибка также может быть вызвана конфликтом со промежуточной группой ресурсов.

Решение

В зависимости от вашего сценария для Конструктора образов виртуальных машин могут потребоваться следующие разрешения:

  • получение образа или группы ресурсов из Коллекции вычислений Azure (ранее она называлась "Общая коллекция образов");
  • распространение образа или ресурса Коллекции вычислений Azure.
  • Учетная запись хранения, контейнер или BLOB-объект, к которому обращается настройщик File.

Кроме того, убедитесь, что имя промежуточной группы ресурсов для каждого шаблона образа указано уникально.

Дополнительные сведения о настройке разрешений см. в статьях Настройка разрешений Конструктора образов виртуальных машин с помощью Azure CLI и Настройка разрешений Конструктора образов виртуальных машин с помощью PowerShell.

Ошибка при получении управляемого образа

Ошибка

Build (Managed Image) step failed: Error getting Managed Image '/subscriptions/.../providers/Microsoft.Compute/images/mymanagedmg1': Error getting managed image (...): compute.
ImagesClient#Get: Failure responding to request: StatusCode=403 -- Original Error: autorest/azure: Service returned an error.
Status=403 Code="AuthorizationFailed" Message="The client '......' with object id '......' doesn't have authorization to perform action 'Microsoft.Compute/images/read' over scope

Причина

Отсутствуют разрешения.

Решение

В зависимости от вашего сценария для Конструктора образов виртуальных машин могут потребоваться следующие разрешения:

  • получение образа или группы ресурсов из Коллекции вычислений Azure;
  • распространение образа или ресурса Коллекции вычислений Azure.
  • Учетная запись хранения, контейнер или BLOB-объект, к которому обращается настройщик File.

Дополнительные сведения о настройке разрешений см. в статьях Настройка разрешений Конструктора образов виртуальных машин с помощью Azure CLI и Настройка разрешений Конструктора образов виртуальных машин с помощью PowerShell.

Сбой этапа сборки для версии образа

Ошибка

Build (Shared Image Version) step failed for Image Version '/subscriptions/.../providers/Microsoft.Compute/galleries/.../images/... /versions/0.23768.4001': Error getting Image Version '/subscriptions/.../resourceGroups/<rgName>/providers/Microsoft.Compute/galleries/.../images/.../versions/0.23768.4001': Error getting image version '... :0.23768.4001': compute.GalleryImageVersionsClient#Get: Failure responding to request: StatusCode=404 -- Original Error: autorest/azure: Service returned an error.
Status=404 Code="ResourceNotFound" Message="The Resource 'Microsoft.Compute/galleries/.../images/.../versions/0.23768.4001' under resource group '<rgName>' was not found."

Причина

Конструктор образов виртуальных машин не может найти исходный образ.

Решение

Убедитесь, что исходный образ указан правильно и существует в расположении Конструктора образов виртуальных машин.

Скачивание внешнего файла в локальный файл

Ошибка

Downloading external file (<myFile>) to local file (xxxxx.0.customizer.fp) [attempt 1 of 10] failed: Error downloading '<myFile>' to 'xxxxx.0.customizer.fp'..

Причина

Неверное имя или расположение файла, или расположение недоступно.

Решение

Убедитесь, что файл достижим. Проверьте правильность имени и расположения.

Ошибка авторизации при создании диска

Сборка построителя образов Azure завершается сбоем с ошибкой авторизации, которая выглядит следующим образом:

Ошибка

Attempting to deploy created Image template in Azure fails with an 'The client '6df325020-fe22-4e39-bd69-10873965ac04' with object id '6df325020-fe22-4e39-bd69-10873965ac04' does not have authorization to perform action 'Microsoft.Compute/disks/write' over scope '/subscriptions/<subscriptionID>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/disks/proxyVmDiskWin_<timestamp>' or the scope is invalid. If access was recently granted, please refresh your credentials.'

Причина

Эта ошибка возникает при попытке указать существующую группу ресурсов и виртуальную сеть в службе построителя образов Azure с исходным образом Windows.

Решение

Вам потребуется назначить роль участник группе ресурсов для субъекта-службы, соответствующего первому приложению Azure Image Builder, с помощью команды CLI или инструкции портала ниже.

Сначала убедитесь, что субъект-служба связана с первым приложением Azure Image Builder с помощью следующей команды CLI:

az ad sp show --id {servicePrincipalName, or objectId}

Затем для реализации этого решения с помощью ИНТЕРФЕЙСА командной строки используйте следующую команду:

az role assignment create -g {ResourceGroupName} --assignee {AibrpSpOid} --role Contributor

Чтобы реализовать это решение на портале, следуйте инструкциям в этой документации. Назначение ролей Azure с помощью портал Azure — Azure RBAC.

На шаге 1. Определите необходимые область: необходимая область является вашей группой ресурсов.

На шаге 3. Выберите соответствующую роль: роль — участник.

На шаге 4. Выберите пользователей, которым требуется доступ: выберите участника "Построитель образов виртуальных машин Azure"

Затем перейдите к шагу 6. Назначьте роль для назначения роли.

Устранение ошибок сборки

При возникновении сбоев построения образа просмотрите ошибку из lastrunstatus, а затем сведения об ошибке в файле customization.log.

az image builder show --name $imageTemplateName  --resource-group $imageResourceGroup
Get-AzImageBuilderTemplate -ImageTemplateName  <imageTemplateName> -ResourceGroupName <imageTemplateResourceGroup> | Select-Object LastRunStatus, LastRunStatusMessage

Журнал настройки

При сборке образа журналы создаются и сохраняются в учетной записи хранения. Конструктор образов виртуальных машин создает учетную запись хранения во временной группе ресурсов при создании артефакта шаблона образа.

В имени учетной записи хранения используется шаблон IT_<ImageResourceGroupName><TemplateName><GUID> (например, IT_aibmdi_helloImageTemplateLinux01).

Чтобы просмотреть customization.log файл в группе ресурсов, выберите служба хранилища BLOB-объекты>packerlogs учетной записи>, выберите каталог и выберите файл customization.log.

Общие сведения о файле customization.log

Журнал содержит подробную информацию. В нем содержится информация о сборке образа, включая все проблемы, связанные с распространением образа, например с репликацией Коллекции вычислений Azure. Эти ошибки отображаются в сообщении об ошибке состояния шаблона образа.

Файл customization.log включает следующие этапы:

  1. Этап развертывания виртуальной машины сборки и зависимостей с использованием шаблонов ARM в промежуточную группу ресурсов IT_. Этот этап содержит несколько записей в поставщике ресурсов Конструктора образов виртуальных машин:

    Azure request method="POST" request="https://management.azure.com/subscriptions/<subID>/resourceGroups/IT_aibImageRG200_window2019VnetTemplate01_dec33089-1cc3-cccc-cccc-ccccccc/providers/Microsoft.Storage/storageAccounts
    ..
    PACKER OUT ==> azure-arm: Deploying deployment template ...
    ..
    
  2. Этап состояния развертывания. Этот этап содержит информацию о состоянии развертывания каждого ресурса:

    PACKER ERR 2020/04/30 23:28:50 packer: 2020/04/30 23:28:50 Azure request method="GET" request="https://management.azure.com/subscriptions/<subID>/resourcegroups/IT_aibImageRG200_window2019VnetTemplate01_dec33089-1cc3-4505-ae28-6661e43fac48/providers/Microsoft.Resources/deployments/pkrdp51lc0339jg/operationStatuses/08586133176207523519?[REDACTED]" body=""
    
  3. Этап подключения к виртуальной машины сборки.

    В Windows Конструктор образов виртуальных машин подключается с помощью WinRM:

    PACKER ERR 2020/04/30 23:30:50 packer: 2020/04/30 23:30:50 Waiting for WinRM, up to timeout: 10m0s
    ..
    PACKER OUT     azure-arm: WinRM connected.
    

    В Linux Конструктор образов виртуальных машин подключается с помощью SSH:

    PACKER OUT ==> azure-arm: Waiting for SSH to become available...
    PACKER ERR 2019/12/10 17:20:51 packer: 2020/04/10 17:20:51 [INFO] Waiting for SSH, up to timeout: 20m0s
    PACKER OUT ==> azure-arm: Connected to SSH!
    
  4. Этап выполнения настроек. При выполнении настроек информацию о них можно найти в файле customization.log. Поиск (телеметрии).

    (telemetry) Starting provisioner windows-update
    (telemetry) ending windows-update
    (telemetry) Starting provisioner powershell
    (telemetry) ending powershell
    (telemetry) Starting provisioner file
    (telemetry) ending file
    (telemetry) Starting provisioner windows-restart
    (telemetry) ending windows-restart
    
    (telemetry) Finalizing. - This means the build hasfinished
    
  5. Этап отмены подготовки. В Конструкторе образов виртуальных машин добавлен скрытый настройщик. Этот этап отмены подготовки предназначен для подготовки виртуальной машины к отмене подготовки. В Windows он запускает Sysprep (с помощью c:\DeprovisioningScript.ps1). В Linux он запускает waagent-deprovision (с помощью /tmp/DeprovisioningScript.sh).

    Например:

    PACKER ERR 2020/03/04 23:05:04 [INFO] (telemetry) Starting provisioner powershell
    PACKER ERR 2020/03/04 23:05:04 packer: 2020/03/04 23:05:04 Found command: if( TEST-PATH c:\DeprovisioningScript.ps1 ){cat c:\DeprovisioningScript.ps1} else {echo "Deprovisioning script [c:\DeprovisioningScript.ps1] could not be found. Image build may fail or the VM created from the Image may not boot. Please make sure the deprovisioning script is not accidentally deleted by a Customizer in the Template."}
    
  6. Этап очистки. После завершения сборки ресурсы Конструктор образов виртуальных машин удаляются.

    PACKER ERR ==> azure-arm: Deleting individual resources ...
    ...
    PACKER ERR 2020/02/04 02:04:23 packer: 2020/02/04 02:04:23 Azure request method="DELETE" request="https://management.azure.com/subscriptions/<subId>/resourceGroups/IT_aibDevOpsImg_t_vvvvvvv_yyyyyy-de5f-4f7c-92f2-xxxxxxxx/providers/Microsoft.Network/networkInterfaces/pkrnijamvpo08eo?[REDACTED]" body=""
    ...
    PACKER ERR ==> azure-arm: The resource group was not created by Packer, not deleting ...
    

Советы по устранению неполадок сценария или встроенной настройки

  • Протестируйте код перед его передачей в Конструктор образов виртуальных машин.
  • Убедитесь, что Политика Azure и брандмауэр разрешают подключение к удаленным ресурсам.
  • Выведите комментарии на консоль с помощью Write-Host или echo. Это позволит выполнять поиск в файле customization.log.

Устранение распространенных ошибок сборки

Сбой развертывания шаблона из-за нарушения политики

Ошибка

{
  "statusCode": "BadRequest",
  "serviceRequestId": null,
  "statusMessage": "{\"error\":{\"code\":\"InvalidTemplateDeployment\",\"message\":\"The template deployment failed because of policy violation. Please see details for more information.\",\"details\":[{\"code\":\"RequestDisallowedByPolicy\",\"target\":\"<target_name>\",\"message\":\"Resource '<resource_name>' was disallowed by policy. Policy identifiers: '[{\\\"policyAssignment\\\":{\\\"name\\\":\\\"[Initiative] KeyVault (Microsoft.KeyVault)\\\",\\\"id\\\":\\\"/providers/Microsoft.Management/managementGroups/<managementGroup_name>/providers/Microsoft.Authorization/policyAssignments/Microsoft.KeyVault\\\"},\\\"policyDefinition\\\":{\\\"name\\\":\\\"Azure Key Vault should disable public network access\\\",\\\"id\\\":\\\"/providers/Microsoft.Management/managementGroups/<managementGroup_name>/providers/Microsoft.Authorization/policyDefinitions/KeyVault.disablePublicNetworkAccess_deny_deny\\\"},\\\"policySetDefinition\\\":{\\\"name\\\":\\\"[Initiative] KeyVault (Microsoft.KeyVault)\\\",\\\"id\\\":\\\"/providers/Microsoft.Management/managementGroups/<managementGroup_name>/providers/Microsoft.Authorization/policySetDefinitions/Microsoft.KeyVault\\\"}}]'.\",\"additionalInfo\":[{\"type\":\"PolicyViolation\"}]}]}}",
  "eventCategory": "Administrative",
  "entity": "/subscriptions/<subscription_ID>/<resourcegroups>/<resourcegroupname>/providers/Microsoft.Resources/deployments/<deployment_name>",
  "message": "Microsoft.Resources/deployments/validate/action",
  "hierarchy": "<subscription_ID>/<resourcegroupname>/<policy_name>/<managementGroup_name>/<deployment_ID>"
}

Причина

Указанная выше ошибка нарушения политики является результатом использования Azure Key Vault с отключенным общедоступным доступом. В настоящее время построитель образов Azure не поддерживает эту конфигурацию.

Решение

Хранилище ключей Azure должно быть создано с включенным общедоступным доступом.

Сбой команды выполнения сборки пакета

Ошибка

  "provisioningState": "Succeeded",
  "lastRunStatus": {
   "startTime": "2020-04-30T23:24:06.756985789Z",
   "endTime": "2020-04-30T23:39:14.268729811Z",
   "runState": "Failed",
   "message": "Failed while waiting for packerizer: Microservice has failed: Failed while processing request: Error when executing packerizer: Packer build command has failed: exit status 1. During the image build, a failure has occurred, please review the build log to identify which build/customization step failed. For more troubleshooting steps go to https://aka.ms/azvmimagebuilderts. Image Build log location: https://xxxxxxxxxx.blob.core.windows.net/packerlogs/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx/customization.log. OperationId: xxxxxx-5a8c-4379-xxxx-8d85493bc791. Use this operationId to search packer logs."

Причина

Сбой настройки.

Решение

Проверьте журнал на обнаружение сбое настройщиков. Поиск (телеметрии).

Например:

(telemetry) Starting provisioner windows-update
(telemetry) ending windows-update
(telemetry) Starting provisioner powershell
(telemetry) ending powershell
(telemetry) Starting provisioner file
(telemetry) ending file
(telemetry) Starting provisioner windows-restart
(telemetry) ending windows-restart

(telemetry) Finalizing. - This means the build has finished

Превышено тайм-аут

Ошибка

Deployment failed. Correlation ID: xxxxx-xxxx-xxxx-xxxx-xxxxxxxxx. Failed in building/customizing image: Failed while waiting for packerizer: Timeout waiting for microservice to complete: 'context deadline exceeded'

Причина

Сборка превысила тайм-аут сборки. Эта ошибка отображается в разделе lastrunstatus.

Решение

  1. Ознакомьтесь с файлом customization.log. Найдите последнего настройщика для запуска. Найдите (телеметрия), начиная с конца журнала.

  2. Проверьте настройки сценария. Настройки не могут подавить работу пользователя с командами, такими как параметры quiet. Например, результаты apt-get install -y приводит к приостановке выполнения сценария с ожиданием вмешательства пользователя.

  3. Если вы используете настройку File для загрузки артефактов, превышающих 20 МБ, см. раздел об обходных путях.

  4. Проверьте ошибки и зависимости в сценарии, которые могут привести к переходу сценария в состояние ожидания.

  5. Если предполагается, что настройки требуют больше времени, увеличьте значение buildTimeoutInMinutes. По умолчанию — 4 часа.

  6. При наличии ресурсоемких действий, таких как загрузка файлов более гигабайта (ГБ), учитывайте объем дискового пространства базовой виртуальной машины сборки. Служба использует виртуальную машину Standard_D1_v2. Виртуальная машина имеет 1 виртуальный ЦП и память 3,5 ГБ. Если вы скачиваете файл размером 50 ГБ, вероятно, это приведет к исчерпанию ресурсов виртуальных машин и сбою передачи данных между Конструктором образов виртуальных машин и виртуальной машиной сборки. Повторите сборку на виртуальной машине с большим объемом памяти, устанавливаемым в параметре VM_Size.

Длительное время загрузки файла

Ошибка

[086cf9c4-0457-4e8f-bfd4-908cfe3fe43c] PACKER OUT
myBigFile.zip 826 B / 826000 B  1.00%
[086cf9c4-0457-4e8f-bfd4-908cfe3fe43c] PACKER OUT
myBigFile.zip 1652 B / 826000 B  2.00%
[086cf9c4-0457-4e8f-bfd4-908cfe3fe43c] PACKER OUT
..
hours later...
..
myBigFile.zip 826000 B / 826000 B  100.00%
[086cf9c4-0457-4e8f-bfd4-908cfe3fe43c] PACKER OUT

Причина

Настройщик File скачивает большой файл.

Решение

Настройщик File подходит только для загрузки небольших (менее 20 МБ) файлов. Для загрузки больших файлов используйте сценарий или встроенную команду. Например, в Linux можно использовать wget или curl. В Windows можно использовать Invoke-WebRequest.

Построителю не удается запустить Windows-Restart с кодом ошибки 1190

Ошибка

[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 [INFO] (telemetry) Starting provisioner windows-restart
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 packer-plugin-azure plugin: 2023/06/13 08:28:58 [INFO] starting remote command: shutdown /r /f /t 10
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 packer-plugin-azure plugin: 2023/06/13 08:28:58 [INFO] command 'shutdown /r /f /t 10' exited with code: 0
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER OUT ==> azure-arm: A system shutdown has already been scheduled.(1190)
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 packer-plugin-azure plugin: 2023/06/13 08:28:58 [INFO] RPC endpoint: Communicator ended with: 0
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 [INFO] 0 bytes written for 'stdout'
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 [INFO] 0 bytes written for 'stderr'
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 [INFO] RPC client: Communicator ended with: 0
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 [INFO] RPC endpoint: Communicator ended with: 0
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 packer-provisioner-windows-restart plugin: [INFO] 0 bytes written for 'stdout'
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 packer-provisioner-windows-restart plugin: [INFO] 0 bytes written for 'stderr'
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 packer-provisioner-windows-restart plugin: [INFO] RPC client: Communicator ended with: 0
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 packer-provisioner-windows-restart plugin: Check if machine is rebooting...
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 packer-plugin-azure plugin: 2023/06/13 08:28:58 [INFO] starting remote command: shutdown /r /f /t 60 /c "packer restart test"
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 packer-plugin-azure plugin: 2023/06/13 08:28:58 [INFO] command 'shutdown /r /f /t 60 /c "packer restart test"' exited with code: 1190
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 packer-plugin-azure plugin: 2023/06/13 08:28:58 [INFO] RPC endpoint: Communicator ended with: 1190
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 [INFO] 52 bytes written for 'stderr'
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 [INFO] 0 bytes written for 'stdout'
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 [INFO] RPC client: Communicator ended with: 1190
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 [INFO] RPC endpoint: Communicator ended with: 1190
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 packer-provisioner-windows-restart plugin: [INFO] 52 bytes written for 'stderr'
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 packer-provisioner-windows-restart plugin: [INFO] 0 bytes written for 'stdout'
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 packer-provisioner-windows-restart plugin: [INFO] RPC client: Communicator ended with: 1190
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 packer-provisioner-windows-restart plugin: Reboot already in progress, waiting...
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:29:08 packer-provisioner-windows-restart plugin: Check if machine is rebooting...
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:29:09 [INFO] 0 bytes written for 'stderr'
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:29:09 packer-provisioner-windows-restart plugin: [INFO] 0 bytes written for 'stderr'
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:29:09 packer-provisioner-windows-restart plugin: Waiting for machine to reboot with timeout: 15m0s
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:29:09 packer-provisioner-windows-restart plugin: Waiting for machine to become available...
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER OUT ==> Some builds didn't complete successfully and had errors:
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:46:26 machine readable: azure-arm,error []string{"Timeout waiting for machine to restart."}
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER OUT --> azure-arm: Timeout waiting for machine to restart.
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR ==> Builds finished but no artifacts were created.
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER OUT
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:46:26 [INFO] (telemetry) Finalizing.
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER OUT ==> Builds finished but no artifacts were created.

Причина

Шаг обновления Windows объявляется преждевременно в образах на основе Windows Server 2016.

Решение

Увеличение restartTimeout от 15 минут до 30 минут.

Ошибка

Deployment failed. Correlation ID: XXXXXX-XXXX-XXXXXX-XXXX-XXXXXX. Failed in distributing 1 images out of total 1: {[Error 0] [Distribute 0] Error publishing MDI to Azure Compute Gallery:/subscriptions/<subId>/resourceGroups/xxxxxx/providers/Microsoft.Compute/galleries/xxxxx/images/xxxxxx, Location:eastus. Error: Error returned from SIG client while publishing MDI to Azure Compute Gallery for dstImageLocation: eastus, dstSubscription: <subId>, dstResourceGroupName: XXXXXX, dstGalleryName: XXXXXX, dstGalleryImageName: XXXXXX. Error: Error waiting on Azure Compute Gallery future for resource group: XXXXXX, gallery name: XXXXXX, gallery image name: XXXXXX.Error: Future#WaitForCompletion: context has been cancelled: StatusCode=200 -- Original Error: context deadline exceeded}

Причина

В Конструкторе образов виртуальных машин истекло время ожидания для добавления и репликации образа в Коллекцию вычислений Azure. Если образ внедряется в коллекцию, можно предположить, что построение образа прошло успешно. Однако общий процесс завершился ошибкой, так как Конструктор образов виртуальных машин ожидал ответа от Коллекции вычислений Azure, чтобы считать репликацию завершенной. Несмотря на то, что сборка завершилась неудачно, репликация продолжается. Свойства версии образа можно получить, проверив распространение runOutput.

$runOutputName=<distributionRunOutput>
az resource show \
    --ids "/subscriptions/$subscriptionID/resourcegroups/$imageResourceGroup/providers/Microsoft.VirtualMachineImages/imageTemplates/$imageTemplateName/runOutputs/$runOutputName"  \
    --api-version=2020-02-14

Решение

Увеличьте значение buildTimeoutInMinutes.

События со сведениями о ресурсах Windows малого объема

Ошибка

[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER OUT     azure-arm: Waiting for operation to complete (system performance: 1% cpu; 37% memory)...
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER OUT     azure-arm: Waiting for operation to complete (system performance: 51% cpu; 35% memory)...
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER OUT     azure-arm: Waiting for operation to complete (system performance: 21% cpu; 37% memory)...
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER OUT     azure-arm: Waiting for operation to complete (system performance: 21% cpu; 36% memory)...
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER OUT     azure-arm: Waiting for operation to complete (system performance: 90% cpu; 32% memory)...
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER OUT     azure-arm: Waiting for the Windows Modules Installer to exit...
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 packer: 2020/04/30 23:38:58 [INFO] command 'PowerShell -ExecutionPolicy Bypass -OutputFormat Text -File C:/Windows/Temp/packer-windows-update-elevated.ps1' exited with code: 101
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER OUT ==> azure-arm: Restarting the machine...
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 packer: 2020/04/30 23:38:58 [INFO] RPC endpoint: Communicator ended with: 101
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 [INFO] 1672 bytes written for 'stdout'
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 [INFO] 0 bytes written for 'stderr'
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 [INFO] RPC client: Communicator ended with: 101
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 [INFO] RPC endpoint: Communicator ended with: 101
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER OUT ==> azure-arm: Waiting for machine to become available...
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 packer-provisioner-windows-update: 2020/04/30 23:38:58 [INFO] 1672 bytes written for 'stdout'
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 packer-provisioner-windows-update: 2020/04/30 23:38:58 [INFO] 0 bytes written for 'stderr'
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 packer-provisioner-windows-update: 2020/04/30 23:38:58 [INFO] RPC client: Communicator ended with: 101
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 packer: 2020/04/30 23:38:58 [INFO] starting remote command: shutdown.exe -f -r -t 0 -c "packer restart"
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 packer: 2020/04/30 23:38:58 [INFO] command 'shutdown.exe -f -r -t 0 -c "packer restart"' exited with code: 0
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 packer: 2020/04/30 23:38:58 [INFO] RPC endpoint: Communicator ended with: 0
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 [INFO] 0 bytes written for 'stderr'
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 [INFO] 0 bytes written for 'stdout'
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER OUT ==> azure-arm: A system shutdown is in progress.(1115)
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 [INFO] RPC client: Communicator ended with: 0
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 [INFO] RPC endpoint: Communicator ended with: 0
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 packer-provisioner-windows-update: 2020/04/30 23:38:58 [INFO] 0 bytes written for 'stdout'
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 packer-provisioner-windows-update: 2020/04/30 23:38:58 [INFO] 0 bytes written for 'stderr'
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 packer-provisioner-windows-update: 2020/04/30 23:38:58 [INFO] RPC client: Communicator ended with: 0
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:59 packer: 2020/04/30 23:38:59 [INFO] starting remote command: shutdown.exe -f -r -t 60 -c "packer restart test"
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:59 packer: 2020/04/30 23:38:59 [INFO] command 'shutdown.exe -f -r -t 60 -c "packer restart test"' exited with code: 1115
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:59 packer: 2020/04/30 23:38:59 [INFO] RPC endpoint: Communicator ended with: 1115
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:59 [INFO] 0 bytes written for 'stdout'
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:59 [INFO] 40 bytes written for 'stderr'
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:59 [INFO] RPC client: Communicator ended with: 1115
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:59 [INFO] RPC endpoint: Communicator ended with: 1115
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:59 packer-provisioner-windows-update: 2020/04/30 23:38:59 [INFO] 40 bytes written for 'stderr'
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:59 packer-provisioner-windows-update: 2020/04/30 23:38:59 [INFO] 0 bytes written for 'stdout'
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:59 packer-provisioner-windows-update: 2020/04/30 23:38:59 [INFO] RPC client: Communicator ended with: 1115
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:59 packer-provisioner-windows-update: 2020/04/30 23:38:59 Retryable error: Machine not yet available (exit status 1115)
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER OUT Build 'azure-arm' errored: unexpected EOF
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER OUT

Причина

Недостаток ресурсов. Эта проблема, как правило, возникает при работе Центра обновления Windows с использованием виртуальной машины сборки по умолчанию размером D1_V2.

Решение

Увеличьте размер виртуальной машины сборки.

Сборка завершена, но артефакты не созданы

Предупреждение

[<log_id>] PACKER 2023/09/14 19:01:18 ui: Build 'azure-arm' finished after 3 minutes 13 seconds.
[<log_id>] PACKER 2023/09/14 19:01:18 ui:
[<log_id>] PACKER ==> Wait completed after 3 minutes 13 seconds
[<log_id>] PACKER 2023/09/14 19:01:18 ui:
[<log_id>] PACKER ==> Builds finished but no artifacts were created.
[<log_id>] PACKER 2023/09/14 19:01:18 [INFO] (telemetry) Finalizing.
[<log_id>] PACKER 2023/09/14 19:01:19 waiting for all plugin processes to complete...
[<log_id>] PACKER 2023/09/14 19:01:19 /aib/packerInput/packer-plugin-azure: plugin process exited
[<log_id>] PACKER 2023/09/14 19:01:19 /aib/packerInput/packer: plugin process exited
[<log_id>] PACKER 2023/09/14 19:01:19 /aib/packerInput/packer: plugin process exited
[<log_id>] PACKER 2023/09/14 19:01:19 /aib/packerInput/packer: plugin process exited
[<log_id>] PACKER Done exporting Packer logs to Azure Storage.

Решение

Приведенное выше предупреждение можно безопасно игнорировать.

Пропуск создания образа

Предупреждение

[<log_id>] PACKER 2023/09/14 19:00:18 ui: ==> azure-arm:  -> Snapshot ID : '/subscriptions/<subscription_id>/resourceGroups/<resourcegroup_name>/providers/Microsoft.Compute/snapshots/<snapshot_name>'
[<log_id>] PACKER 2023/09/14 19:00:18 ui: ==> azure-arm: Skipping image creation...
[<log_id>] PACKER 2023/09/14 19:00:18 ui: ==> azure-arm:
[<log_id>] PACKER ==> azure-arm: Deleting individual resources ...
[<log_id>] PACKER 2023/09/14 19:00:18 packer-plugin-azure plugin: 202

Решение

Приведенное выше предупреждение можно безопасно игнорировать.

Ресурс не найден

Ошибка

  "provisioningState": "Succeeded",
  "lastRunStatus": {
   "startTime": "2020-05-01T00:13:52.599326198Z",
   "endTime": "2020-05-01T00:15:13.62366898Z",
   "runState": "Failed",
   "message": "network.InterfacesClient#UpdateTags: Failure responding to request: StatusCode=404 -- Original Error: autorest/azure: Service returned an error. Status=404 Code=\"ResourceNotFound\" Message=\"The Resource 'Microsoft.Network/networkInterfaces/aibpls7lz2e.nic.4609d697-be0a-4cb0-86af-49b6fe877fe1' under resource group 'IT_aibImageRG200_window2019VnetTemplate01_9988723b-af56-413a-9006-84130af0e9df' was not found.\""
  },

Причина

Отсутствуют разрешения.

Решение

Еще раз проверьте, чтобы у Конструктора образов виртуальных машин были все необходимые разрешения.

Дополнительные сведения о настройке разрешений см. в статьях Настройка разрешений Конструктора образов виртуальных машин с помощью Azure CLI и Настройка разрешений Конструктора образов виртуальных машин с помощью PowerShell.

Синхронизация Sysprep

Ошибка

[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: Write-Output '>>> Waiting for GA Service (RdAgent) to start ...'
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: while ((Get-Service RdAgent) -and ((Get-Service RdAgent).Status -ne 'Running')) { Start-Sleep -s 5 }
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: Write-Output '>>> Waiting for GA Service (WindowsAzureTelemetryService) to start ...'
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: while ((Get-Service WindowsAzureTelemetryService) -and ((Get-Service WindowsAzureTelemetryService).Status -ne 'Running')) { Start-Sleep -s 5 }
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: Write-Output '>>> Waiting for GA Service (WindowsAzureGuestAgent) to start ...'
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: while ((Get-Service WindowsAzureGuestAgent) -and ((Get-Service WindowsAzureGuestAgent).Status -ne 'Running')) { Start-Sleep -s 5 }
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: Write-Output '>>> Sysprepping VM ...'
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: if( Test-Path $Env:SystemRoot\system32\Sysprep\unattend.xml ) {
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm:   Remove-Item $Env:SystemRoot\system32\Sysprep\unattend.xml -Force
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: }
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: & $Env:SystemRoot\System32\Sysprep\Sysprep.exe /oobe /generalize /quiet /quit
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: while($true) {
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm:   $imageState = (Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\State).ImageState
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm:   Write-Output $imageState
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm:   if ($imageState -eq 'IMAGE_STATE_GENERALIZE_RESEAL_TO_OOBE') { break }
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm:   Start-Sleep -s 5
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: }
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: Write-Output '>>> Sysprep complete ...'
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: >>> Waiting for GA Service (RdAgent) to start ...
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: >>> Waiting for GA Service (WindowsAzureTelemetryService) to start ...
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: >>> Waiting for GA Service (WindowsAzureGuestAgent) to start ...
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: >>> Sysprepping VM ...
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: IMAGE_STATE_COMPLETE
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT ==> azure-arm: Get-Service : Cannot find any service with service name 'WindowsAzureGuestAgent'.
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT ==> azure-arm: At C:\DeprovisioningScript.ps1:6 char:9
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT ==> azure-arm: + while ((Get-Service WindowsAzureGuestAgent) -and ((Get-Service Window ...
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT ==> azure-arm: +         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT ==> azure-arm:     + CategoryInfo          : ObjectNotFound: (WindowsAzureGuestAgent:String) [Get-Service], ServiceCommandException
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT ==> azure-arm:     + FullyQualifiedErrorId : NoServiceFoundForGivenName,Microsoft.PowerShell.Commands.GetServiceCommand
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT ==> azure-arm:
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: IMAGE_STATE_UNDEPLOYABLE
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: IMAGE_STATE_UNDEPLOYABLE
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: IMAGE_STATE_UNDEPLOYABLE
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: IMAGE_STATE_UNDEPLOYABLE
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: IMAGE_STATE_UNDEPLOYABLE
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: IMAGE_STATE_UNDEPLOYABLE
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: IMAGE_STATE_UNDEPLOYABLE
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: IMAGE_STATE_UNDEPLOYABLE
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: IMAGE_STATE_UNDEPLOYABLE
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: IMAGE_STATE_UNDEPLOYABLE
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: IMAGE_STATE_UNDEPLOYABLE
...
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: IMAGE_STATE_UNDEPLOYABLE
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER ERR 2020/05/05 22:26:17 Cancelling builder after context cancellation context canceled
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT Cancelling build after receiving terminated
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER ERR 2020/05/05 22:26:17 packer: 2020/05/05 22:26:17 Cancelling provisioning due to context cancellation: context canceled
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT ==> azure-arm:
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER ERR 2020/05/05 22:26:17 packer: 2020/05/05 22:26:17 Cancelling hook after context cancellation context canceled
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT ==> azure-arm: The resource group was not created by Packer, deleting individual resources ...
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER ERR ==> azure-arm: The resource group was not created by Packer, deleting individual resources ...

Причина

Причиной может быть проблема с синхронизацией, обусловленной размером D1_V2 виртуальной машины. Если настройки ограничены и выполняются менее чем за три секунды, Конструктор образов виртуальных машин запускает команды Sysprep для отмены подготовки. При отмене подготовки Конструктора образов виртуальных машин команда Sysprep проверяет WindowsAzureGuestAgent, которые могут быть установлены не полностью, что приведет к проблеме с синхронизацией.

Решение

Чтобы избежать проблем с синхронизацией, вы можете увеличить размер виртуальной машины или добавить 60-секундную настройку режима сна PowerShell.

Незарегистрированный поставщик Экземпляры контейнеров Azure

Ошибка

Azure Container Instances provider not registered for your subscription.

Причина

У вашей подписки шаблона нет зарегистрированного поставщика Экземпляры контейнеров Azure.

Решение

Зарегистрируйте поставщика Экземпляры контейнеров Azure для подписки шаблона и добавьте команды Azure CLI или PowerShell:

  • Azure CLI: az provider register -n Microsoft.ContainerInstance
  • PowerShell: Register-AzResourceProvider -ProviderNamespace Microsoft.ContainerInstance

превышена квота Экземпляры контейнеров Azure

Ошибка

Azure Container Instances quota exceeded"

Причина

У вашей подписки недостаточно квоты Экземпляры контейнеров Azure (ACI) для Azure Image Builder, чтобы успешно создать образ.

Решение

Чтобы сделать квоту ACI доступной для построителя образов Azure, сделайте следующее:

  • Подстановка других Экземпляры контейнеров Azure в подписке и удаление ненужных экземпляров, чтобы сделать квоту доступной для построителя образов Azure.
  • Построитель образов Azure развертывает ACI только временно во время сборки. Эти экземпляры удаляются после завершения сборки. Если в подписке выполняется слишком много параллельных сборок образов, можно подумать о задержке некоторых сборок образа. Это уменьшает параллельное использование ACI в подписке. Если шаблоны образов настроены для автоматических сборок образов с помощью триггеров, такие неудачные сборки будут автоматически извлечены Конструктором образов Azure.
  • Если текущие ограничения ACI для вашей подписки слишком низки для поддержки сценариев создания образов, вы можете запросить увеличение квоты ACI.

Примечание.

Ресурсы ACI необходимы для изолированных сборок образов.

Слишком много Экземпляры контейнеров Azure развернуто в течение определенного периода времени

Ошибка

"Слишком много Экземпляры контейнеров Azure развернуто в течение определенного периода времени"

Причина

У вашей подписки недостаточно квоты Экземпляры контейнеров Azure (ACI) для Azure Image Builder для успешного создания образов одновременно.

Решение

Доступны следующие действия:

  • Повторите неудачные сборки менее параллельно.
  • Если текущие ограничения ACI для вашей подписки слишком низки для поддержки сценариев создания образов, вы можете запросить увеличение квоты ACI.

Сбой сборки изолированного образа

Ошибка

Сборки построителя образов Azure завершаются сбоем из-за изолированной сборки образа.

Причина

Сборки построителя образов Azure могут завершиться ошибкой из-за причин, перечисленных в этом документе. Однако существует небольшая вероятность сбоя сборки из-за изолированных сборок образов в зависимости от вашего сценария, квот подписки или непредвиденной ошибки службы. Дополнительные сведения см. в разделе "Изолированные сборки образов".

Решение

Если определить, что сборка завершается ошибкой из-за изолированных сборок образов, можно выполнить следующее:

  • Убедитесь, что нет Политика Azure блокировки развертывания ресурсов, упоминание в разделе предварительных требований, в частности, Экземпляры контейнеров Azure, azure виртуальная сеть и частных конечных точек Azure.
  • Убедитесь, что ваша подписка имеет достаточную квоту Экземпляры контейнеров Azure для поддержки всех параллельных сборок образов. Дополнительные сведения см. в разделе Экземпляры контейнеров Azure превышена квота.

В настоящее время конструктор образов Azure находится в процессе развертывания изолированных сборок образов. Определенные шаблоны изображений не привязаны к изолированным сборкам образов, и один и тот же шаблон образа может или не использовать изолированные сборки образов во время различных сборок. Вы можете выполнить следующую команду, чтобы временно запустить сборку без изолированных сборок образов.

  • Повторите сборку. Так как шаблоны изображений не привязаны к функции "Сборки изолированных образов", повторная попытка сборки имеет высокую вероятность повторного запуска без изолированных сборок изображений.

Если ни одно из этих решений не устраняет неудачные сборки образов, вы можете обратиться к поддержка Azure, чтобы временно отказаться от подписки на изолированные сборки образов. Дополнительные сведения см. в статье Создание запроса на поддержку для Azure.

Примечание.

Изолированные сборки образов в конечном итоге будут включены во всех регионах и шаблонах. Таким образом, описанные выше способы устранения рисков должны рассматриваться как временные, а основная причина сбоев сборки должна быть устранена.

Сборка отменяется после отмены контекста отмены контекста

Ошибка

PACKER ERR 2020/03/26 22:11:23 Cancelling builder after context cancellation context canceled
PACKER OUT Cancelling build after receiving terminated
PACKER ERR 2020/03/26 22:11:23 packer-builder-azure-arm plugin: Cancelling hook after context cancellation context canceled
..
PACKER ERR 2020/03/26 22:11:23 packer-builder-azure-arm plugin: Cancelling provisioning due to context cancellation: context canceled
PACKER ERR 2020/03/26 22:11:25 packer-builder-azure-arm plugin: [ERROR] Remote command exited without exit status or exit signal.
PACKER ERR 2020/03/26 22:11:25 packer-builder-azure-arm plugin: [INFO] RPC endpoint: Communicator ended with: 2300218
PACKER ERR 2020/03/26 22:11:25 [INFO] 148974 bytes written for 'stdout'
PACKER ERR 2020/03/26 22:11:25 [INFO] 0 bytes written for 'stderr'
PACKER ERR 2020/03/26 22:11:25 [INFO] RPC client: Communicator ended with: 2300218
PACKER ERR 2020/03/26 22:11:25 [INFO] RPC endpoint: Communicator ended with: 2300218

Причина

Конструктор образов виртуальных машин использует порт 22 (Linux) или 5986 (Windows) для подключения к виртуальной машине сборки. Это происходит, когда служба отключается от виртуальной машины сборки во время сборки образа. Причины отключения могут быть разными, но включение или настройка брандмауэра в сценарии может заблокировать ранее упомянутые порты.

Решение

Проверьте свои сценарии на наличие изменений в брандмауэре или его разблокировки, изменений в настройке протокола SSH или WinRM, убедитесь, что все изменения обеспечивают постоянное подключение между службой и виртуальной машины сборки по упомянутым ранее портам. Дополнительные сведения см. в статье Параметры сети Конструктора образов виртуальных машин.

Ошибки JWT в журнале на ранних этапах сборки

Ошибка

В начале процесса сборки происходит сбой сборки, и в журнале отображается ошибка JSON Web Token (JWT):

PACKER OUT Error: Failed to prepare build: "azure-arm"
PACKER ERR
PACKER OUT
PACKER ERR * client_jwt will expire within 5 minutes, please use a JWT that is valid for at least 5 minutes
PACKER OUT 1 error(s) occurred:

Причина

Значение buildTimeoutInMinutes в шаблоне задается в диапазоне от 1 до 5 минут.

Решение

Как описано в разделе Создание шаблона Конструктора образов виртуальных машин, время ожидания должно быть равным 0, чтобы использовать значение по умолчанию, или более 5 минут, чтобы заменить значение по умолчанию. Измените время ожидания в шаблоне на 0, чтобы использовать значение по умолчанию, или на 6 минут (минимум).

Ошибка удаления ресурса

Ошибка

В конце компиляции очищаются промежуточные ресурсы и журнал настройки может содержать несколько ошибок удаления ресурсов:

PACKER OUT ==> azure-arm: Error deleting resource. Will retry.
...
PACKER OUT ==> azure-arm: Error: network.PublicIPAddressesClient#Delete: Failure sending request: StatusCode=0 -- Original Error: Code="PublicIPAddressCannotBeDeleted" Message=...
...
PACKER ERR 2022/03/07 18:43:06 packer-plugin-azure plugin: 2022/03/07 18:43:06 Retryable error: network.SecurityGroupsClient#Delete: Failure sending request: StatusCode=0 -- Original Error: Code="InUseNetworkSecurityGroupCannotBeDeleted"...

Причина

Такие сообщения в журнале ошибок обычно можно считать безопасными, так как удаление ресурсов повторяется несколько раз и в конечном итоге оно, скорее всего, будет успешным. Вы можете убедиться в этом, продолжая следить за журналами удаления, пока не увидите сообщение об успешном завершении. Кроме того, вы можете проверить временную группу ресурсов и убедиться, что ресурс удален из нее.

Выполнение этих наблюдений особенно важно при сбоях сборки, когда эти сообщения об ошибках могут привести вас к выводу, что они являются причиной сбоев, даже если фактические ошибки могут возникать в другом месте.

Ошибка

Если изображения застряли в удалении шаблона, журнал настройки может показать следующую ошибку:

error deleting resource id /subscriptions/<subscriptionID>/resourceGroups/<rgName>/providers/Microsoft.Network/networkInterfaces/<networkInterfacName>: resources.Client#DeleteByID: Failure sending request: StatusCode=400 --
Original Error: Code="NicInUseWithPrivateEndpoint"
Message="Network interface /subscriptions/<subscriptionID>/resourceGroups/<rgName>/providers/Microsoft.Network/networkInterfaces/<networkInterfacName> cannot be deleted because it is currently in use with an private endpoint (/subscriptions/<subscriptionID>/resourceGroups/<rgName>/providers/Microsoft.Network/privateEndpoints/<pIname>)." Details=[]

Причина

Ошибка возникает, так как сетевой интерфейс в настоящее время используется с частной конечной точкой.

Решение

Чтобы устранить проблему, удалите указанные ниже ресурсы по одному в определенном порядке:

  1. Подключение к частной конечной точке. Это можно найти в ресурсе службы приватного канала, перейдя на вкладку "Подключения к частной конечной точке" на странице ресурса службы приватного канала.
  2. Служба приватного канала.
  3. Сетевой интерфейс и подсистема балансировки нагрузки.
  4. Resource Group.
  5. Шаблон изображения.

Для получения дополнительной помощи вы можете обратиться к поддержка Azure, чтобы устранить зависшие ошибки удаления.

Распространение целевого объекта, не найденного в запросе на обновление

Ошибка

Validation failed: Distribute target with Runoutput name <runoutputname> not found in the update request. Deleting a distribution target is not allowed.

Причина

Эта ошибка возникает, когда существующий целевой объект распространения не найден в тексте запроса исправления.

Решение

Массив рассылки должен содержать все целевые объекты распространения, то есть новые целевые объекты (если таковые есть), существующие целевые объекты без изменений и обновленных целевых объектов. Если вы хотите удалить существующий целевой объект распространения, удалите и повторно создайте шаблон образа, так как удаление целевого объекта распространения в настоящее время не поддерживается через API исправлений.

Отсутствующие обязательные поля

Ошибка

Validation failed: 'ImageTemplate.properties.distribute[<index>]': Missing field <fieldname>. Please review http://aka.ms/azvmimagebuildertmplref for details on fields required in the Image Builder Template.

Причина

Эта ошибка возникает, когда необходимое поле отсутствует в целевом объекте распространения.

Решение

При создании запроса укажите каждое необходимое поле в целевом объекте распространения, даже если изменения отсутствуют.

Задачи DevOps

Устранение неполадок задачи

Задача не выполняется, только если во время настройки возникает ошибка. Когда это происходит, задача сообщает об ошибке и покидает промежуточную группу ресурсов вместе с журналами, чтобы вы могли определить проблему.

Чтобы найти журнал, нужно знать имя шаблона. Перейдите в раздел pipeline>failed build, а затем перейдите к задаче DevOps Конструктора образов виртуальных машин.

Вы увидите журнал и имя шаблона:

start reading task parameters...
found build at:  /home/vsts/work/r1/a/_ImageBuilding/webapp
end reading parameters
getting storage account details for aibstordot1556933914
created archive /home/vsts/work/_temp/temp_web_package_21475337782320203.zip
Source for image:  { type: 'SharedImageVersion',
  imageVersionId: '/subscriptions/<subscriptionID>/resourceGroups/<rgName>/providers/Microsoft.Compute/galleries/<galleryName>/images/<imageDefName>/versions/<imgVersionNumber>' }
template name:  t_1556938436xxx
  1. Перейдите на портал Azure, найдите имя шаблона в группе ресурсов, а затем найдите группу ресурсов, указав IT_*.
  2. Выберите имя учетной записи хранения >blobs>containers>logs.

Устранение неполадок с успешно выполненными сборками

Возможно, вам нужно будет изучить успешно выполненные сборки и просмотреть их журналы. Как уже упоминалось ранее, при успешном завершении сборки образа промежуточная группа ресурсов, содержащая журналы, будет удалена в процессе очистки. Однако, чтобы предотвратить автоматическую очистку, вы можете ввести sleep после встроенной команды, а затем просматривать журналы, когда сборка будет приостановлена. Для этого выполните следующее.

  1. Обновите встроенную команду, добавив Write-Host / Echo "Sleep". Это обеспечит вам время для поиска в журнале.
  2. Добавьте для sleep значение не менее 10 минут с помощью команды Start-Sleep или Sleepв Linux.
  3. Используйте этот метод, чтобы найти расположение журнала, а затем продолжайте скачивать или проверять журнал, пока он не перейдет в режим sleep.

Операция отменена

Ошибка

2020-05-05T18:28:24.9280196Z ##[section]Starting: Azure VM Image Builder Task
2020-05-05T18:28:24.9609966Z ==============================================================================
2020-05-05T18:28:24.9610739Z Task         : Azure VM Image Builder Test
2020-05-05T18:28:24.9611277Z Description  : Build images using Azure Image Builder resource provider.
2020-05-05T18:28:24.9611608Z Version      : 1.0.18
2020-05-05T18:28:24.9612003Z Author       : Microsoft Corporation
2020-05-05T18:28:24.9612718Z Help         : For documentation, and end to end example, please visit: http://aka.ms/azvmimagebuilderdevops
2020-05-05T18:28:24.9613390Z ==============================================================================
2020-05-05T18:28:26.0651512Z start reading task parameters...
2020-05-05T18:28:26.0673377Z found build at:  d:\a\r1\a\_AppsAndImageBuilder\webApp
2020-05-05T18:28:26.0708785Z end reading parameters
2020-05-05T18:28:26.0745447Z getting storage account details for aibstagstor1565047758
2020-05-05T18:28:29.8812270Z created archive d:\a\_temp\temp_web_package_09737279437949953.zip
2020-05-05T18:28:33.1568013Z Source for image:  { type: 'PlatformImage',
2020-05-05T18:28:33.1584131Z   publisher: 'MicrosoftWindowsServer',
2020-05-05T18:28:33.1585965Z   offer: 'WindowsServer',
2020-05-05T18:28:33.1592768Z   sku: '2016-Datacenter',
2020-05-05T18:28:33.1594191Z   version: '14393.3630.2004101604' }
2020-05-05T18:28:33.1595387Z template name:  t_1588703313152
2020-05-05T18:28:33.1597453Z starting put template...
2020-05-05T18:28:52.9278603Z put template:  Succeeded
2020-05-05T18:28:52.9281282Z starting run template...
2020-05-05T19:33:14.3923479Z ##[error]The operation was canceled.
2020-05-05T19:33:14.3939721Z ##[section]Finishing: Azure VM Image Builder Task

Причина

Если сборка не была отменена пользователем, она была отменена агентом пользователя Azure DevOps. Вероятно, время ожидания в 1 час истекло из-за особенностей работы Azure DevOps. Если вы используете частный проект и агента, у вас будет 60 минут на сборку. Если сборка превышает время ожидания, DevOps отменяет выполняемую задачу.

Дополнительные сведения о возможностях и ограничениях Azure DevOps см. в разделе Агенты, размещаемые Майкрософт.

Решение

Вы можете разместить собственные агенты DevOps или попытаться сократить время сборки. Например, выполняя распространение в Коллекцию вычислений Azure, вы можете реплицировать их в один регион или асинхронно.

Медленный вход в Windows

Ошибка

Эта ошибка может возникнуть, если вы создаете образ Windows 10 с помощью Конструктор образов виртуальных машин, создаете виртуальную машину из образа, а затем используете протокол удаленного рабочего стола (RDP). Подождите несколько минут на первом экране входа в систему, а затем на синем экране отобразится следующее сообщение:

Please wait for the Windows Modules Installer

Решение

  1. В сборке образа убедитесь, что:

    • При добавлении настройщика перезагрузки Windows в качестве последней настройки не требуются незавершенные перезагрузки.
    • Установка всего программного обеспечения завершена.
  2. Добавьте параметр /mode:vm к параметру Sysprep по умолчанию, который использует Конструктор образов виртуальных машин. Дополнительные сведения см. в подразделе "Переопределение команд" в раздела "Виртуальные машины из образов Конструктор образов виртуальных машин не создаются успешно".

Виртуальные машины из образов Конструктор образов виртуальных машин не создаются успешно

По умолчанию Конструктор образов виртуальных машин выполняет код отмены подготовки в конце каждого этапа настройки образа, чтобы подготовить образ к использованию. Подготовить образ — значит настроить его на повторное использование для создания нескольких виртуальных машин. В рамках этого процесса вы можете передать параметры виртуальной машины, такие как имя хоста, имя пользователя и т. д. Для Windows Конструктор образов виртуальных машин запускает Sysprep, а в Linux — waagent -deprovision.

В Windows в Конструкторе образов Azure используется универсальная команда Sysprep. Однако эта команда может быть неподходящим способом для каждой успешной подготовки Windows. С помощью Конструктора образов виртуальных машин вы можете настроить команду Sysprep. Обратите внимание, что Конструктор образов виртуальных машин является инструментом автоматизации образов, который отвечает за успешное выполнение команды Sysprep. Однако для повторного использования образа могут потребоваться различные команды Sysprep. Для Linux в Конструкторе образов виртуальных машин используется универсальная команда waagent -deprovision+user. Дополнительные сведения см. в разделе Документация агента Linux Microsoft Azure.

Если вы переносите существующую настройку и используете различные команды Sysprep или waagent, можно испробовать общие команды Конструктора образов виртуальных машин. В случае сбоя создания виртуальной машины используйте предыдущие команды Sysprep или waagent.

Предположим, вы успешно использовали Конструктор образов виртуальных машин для создания пользовательского образа Windows, но вам не удалось успешно создать виртуальную машину из образа. Например, создание виртуальной машины не может быть завершено или истекло время ожидания. В этом случае выполните одно из следующих действий:

  • Просмотрите документацию по Windows Server Sysprep.
  • Отправьте запрос на поддержку в службу поддержки клиентов Windows Server Sysprep. Они помогут решить вашу проблему и посоветуют правильную команду Sysprep.

Расположение команд и имена файлов

В Windows:

c:\DeprovisioningScript.ps1

В Linux:

/tmp/DeprovisioningScript.sh

Команда Sysprep: Windows

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 ...'

Команда -deprovision: Linux

sudo /usr/sbin/waagent -force -deprovision+user && export HISTSIZE=0 && sync

Переопределение команд

Чтобы переопределить команды, с помощью средств подготовки сценариев PowerShell или Shell создайте файлы команд со строго соответствующими именами файлов и разместите их в перечисленных ранее каталогах. Конструктор образов виртуальных машин считывает эти команды и записывает результаты их выполнения в файл customization.log.

Поддержка

Если вы обратились к руководству, но у вас по-прежнему возникают проблемы, вы можете открыть обращение в службу поддержки. Обязательно выберите правильный продукт и тему поддержки. Это гарантирует подключение к группе поддержки Конструктора образов виртуальных машин Azure.

Выбор продукта:

Product Family: Azure
Product: Virtual Machine Running (Window\Linux)
Support Topic: Azure Features
Support Subtopic: Azure Image Builder

Следующие шаги

Дополнительные сведения см. в статье Общие сведения о Конструкторе образов виртуальных машин Azure.