Azure VM Image Builder のトラブルシューティング

適用対象: ✔️ Linux VM ✔️ フレキシブルなスケール セット

この記事を使用して、Azure VM Image Builder を使用しているときに発生する可能性がある一般的な問題のトラブルシューティングと解決を行います。

前提条件

ビルドを作成する際は、次の操作を行います。

  • VM Image Builder サービスは、WinRM または Secure Shell (SSH) を使用してビルド VM と通信します。 これらの設定は、ビルドの一部として無効にしないでください。
  • VM Image Builder は、ビルドの一部として、ステージング リソース グループにリソースを作成します。 Azure Policy が VM Image Builder による必要なリソースの作成または使用を妨げていないことを確認してください。
  • Azure 拡張機能などの意図しない機能が Azure Policy によってビルド VM にインストールされていないことを確認します。
  • VM Image Builder に、イメージの読み取り/書き込みとストレージ アカウントへの接続を行うための適切なアクセス許可があることを確認します。 詳細については、Azure CLI または Azure PowerShell のアクセス許可に関するドキュメントを参照してください。
  • スクリプトまたはインライン コマンドがエラー (ゼロ以外の終了コード) で失敗すると、VM Image Builder でのビルドは失敗します。 カスタム スクリプトをテスト済みであることと、エラーなし (終了コード 0) で実行されるか、ユーザー入力を必要とするかを検証済みであることを確認してください。 詳細については、「VM Image Builder と PowerShell を使用して Azure Virtual Desktop イメージを作成する」を参照してください。
  • サブスクリプションに Azure Container Instances の十分なクォータがあることを確認します。
    • 各イメージ ビルドでは、ステージング リソース グループに多くても 1 つの一時的な (4 つの標準コアの) Azure コンテナー インスタンス リソースがデプロイされる可能性があります。 Isolated Image Builds には、これらのリソースが必要です:

VM Image Builder のエラーは、次の 2 つの領域で発生する可能性があります。

  • イメージ テンプレートの送信中
  • イメージのビルド中

Note

CIS によって管理される Azure Marketplace 上の CIS で強化されたイメージ (Linux または Windows) は、構成が原因で Azure Image Builder サービスでビルド エラーを引き起こす可能性があります。 次に例を示します。

  • CIS で強化された Windows イメージは、AIB ビルドの前提条件である WinRM 接続を阻害する可能性があります。
  • CIS Linux イメージは、chmod +x 権限の問題が原因で失敗する可能性があります。

イメージ テンプレート送信エラーのトラブルシューティング

イメージ テンプレート送信エラーは、送信時にのみ返されます。 イメージ テンプレート送信エラーに対しては、エラー ログはありません。 送信中にエラーが発生した場合は、テンプレートの状態を確認することでエラーを返すことができます。具体的には、ProvisioningStateProvisioningErrorMessage/provisioningError を確認します。

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

注意

PowerShell の場合は、VM Image Builder PowerShell モジュールをインストールする必要があります。

重要

API バージョン 2021-10-01 では、今後のすべての API リリースに含まれるエラー スキーマが変更されています。 Azure VM Image Builder の自動化がある場合は、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.

原因

イメージ テンプレートに割り当てられたマネージド サービス ID (MSI) を使用できない場合があります。

解決策

Azure CLI を使用して、イメージ テンプレートで ID をリセットします。 Azure CLI を 2.45.0 バージョン以降に更新してください。

ターゲットのイメージ ビルダー テンプレートからマネージド ID を削除します

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

ターゲットのイメージ ビルダー テンプレートに ID を再割り当てします

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

ターミナル プロビジョニング状態が "Failed" で完了したリソース操作

エラー

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

原因

ほとんどの場合、リソースのデプロイ失敗エラーは、アクセス許可がないことが原因で発生します。 このエラーは、ステージング リソース グループとの競合が原因である可能性もあります。

ソリューション

シナリオによっては、VM Image Builder で次のものに対するアクセス許可が必要になる場合があります。

  • ソース イメージまたは Azure Compute Gallery (旧称 Shared Image Gallery) リソース グループ。
  • 配布イメージまたは Azure Compute Gallery リソース。
  • File カスタマイザーがアクセスしているストレージ アカウント、コンテナー、または BLOB。

また、ステージング リソース グループ名がイメージ テンプレートごとに一意に指定されていることを確認します。

アクセス許可の構成の詳細については、「Azure CLI を使用して VM Image Builder のアクセス許可を構成する」または「PowerShell を使用して VM Image Builder のアクセス許可を構成する」をご覧ください。

マネージド イメージの取得エラー

エラー

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

原因

アクセス許可がありません。

解決策

シナリオによっては、VM Image Builder で次のものに対するアクセス許可が必要になる場合があります。

  • ソース イメージまたは Azure Compute Gallery リソース グループ。
  • 配布イメージまたは Azure Compute Gallery リソース。
  • File カスタマイザーがアクセスしているストレージ アカウント、コンテナー、または BLOB。

アクセス許可の構成の詳細については、「Azure CLI を使用して VM Image Builder のアクセス許可を構成する」または「PowerShell を使用して VM Image Builder のアクセス許可を構成する」をご覧ください。

イメージ バージョンのビルド ステップが失敗した

エラー

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

原因

VM Image Builder ではソース イメージを見つけることはできません。

解決策

ソース イメージが正しく、VM Image Builder の場所に存在していることを確認します。

外部ファイルのローカル ファイルへのダウンロード

エラー

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 Image Builder ビルドは、次のような承認エラーで失敗します。

エラー

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

原因

このエラーは、Windows ソース イメージを使用して既存のリソース グループと VNet を Azure Image Builder サービスに指定しようとすると発生します。

解決策

以下の CLI コマンドまたはポータルの手順を使用し、Azure Image Builder のファースト パーティ アプリに対応するサービス プリンシパルのリソース グループに共同作成者ロールを割り当てる必要があります。

まず、次の CLI コマンドを使用し、サービス プリンシパルが Azure Image Builder のファースト パーティ アプリに関連付けられていることを確認します。

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

次に、CLI を使用してこのソリューションを実装するには、次のコマンドを使用します。

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

ポータルでこのソリューションを実装するには、ドキュメント「Azure portal を使用して Azure ロールを割り当てる - Azure RBAC」の指示に従います。

手順 1: 必要なスコープを特定する」について: 必要なスコープはリソース グループです。

手順 3: 適切なロールを選択する」について: ロールは共同作成者です。

手順 4: アクセスが必要なユーザーを選択する」について: メンバー "Azure Virtual Machine Image Builder" を選択します

次に、「手順 6: ロールを割り当てる」に進み、ロールを割り当てます。

ビルド エラーのトラブルシューティング

イメージ ビルド エラーの場合は、lastrunstatus からエラーを取得した後、customization.log で詳細を確認します。

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

カスタマイズ ログ

イメージのビルドが実行されているとき、ログが作成されてストレージ アカウントに格納されます。 イメージ テンプレート成果物を作成すると、VM Image Builder により、一時リソース グループにストレージ アカウントが作成されます。

ストレージ アカウント名では、IT_<ImageResourceGroupName><TemplateName><GUID> (例、IT_aibmdi_helloImageTemplateLinux01) というパターンが使用されます。

リソース グループ内の customization.log ファイルを表示するには、[ストレージ アカウント]>[BLOB]>packerlogs を選択し、[ディレクトリ] を選択してから、customization.log ファイルを選択します。

カスタマイズ ログの概要

ログは詳細です。 イメージ ビルドの、イメージ ディストリビューション (Azure Compute Gallery レプリケーションなど) に関する問題などが含まれます。 これらのエラーは、イメージ テンプレートの状態のエラー メッセージで表示されます。

customization.log ファイルには次のステージが含まれます。

  1. ARM テンプレートを使用して、ビルド VM と依存関係を、IT_ ステージング リソース グループにデプロイするステージ。 このステージには、VM Image Builder リソース プロバイダーへの複数の POST が含まれます。

    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. ビルド VM に接続するステージ。

    Windows では、VM Image Builder は 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 では、VM Image Builder は 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) を検索します。

    (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. プロビジョニング解除ステージ。 VM Image Builder では、非表示のカスタマイザーが追加されます。 このプロビジョニング解除ステップでは、プロビジョニング解除のための VM の準備が行われます。 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. クリーンアップ ステージ。 ビルドが完了すると、VM Image Builder リソースが削除されます。

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

スクリプトまたはインライン カスタマイズのトラブルシューティングに関するヒント

  • VM Image Builder に渡す前にコードをテストします。
  • Azure Policy とファイアウォールでリモート リソースへの接続が許可されていることを確認します。
  • 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 Image Builder でサポートされていません。

ソリューション

Azure Key Vault は、パブリック アクセスを有効にして作成する必要があります。

Packer ビルド コマンドのエラー

エラー

  "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) を検索します。

次に例を示します。

(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 MB を超える成果物をダウンロードする場合は、回避策セクションを参照してください。

  4. スクリプトが待機する原因になっている可能性のあるエラーと依存関係を確認します。

  5. カスタマイズにもっと時間が必要であると予想される場合は、buildTimeoutInMinutes の値を増やします。 既定値は 4 時間です。

  6. ギガバイト (GB) 規模のファイルのダウンロードなど、リソースを大量に消費する操作がある場合は、基になるビルド VM のサイズを検討します。 サービスでは、Standard_D1_v2 VM が使用されます。 VM には、1 個の vCPU と 3.5 GB のメモリがあります。 50 GB をダウンロードする場合、これでは VM リソースが枯渇し、VM Image Builder とビルド VM の間で通信エラーが発生する可能性があります。 VM_Size を設定し、より大きなメモリ VM でビルドを再試行してください。

長いファイル ダウンロード時間

エラー

[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 MB 未満) ファイルのダウンロードにのみ適しています。 それより大きいファイルのダウンロードには、スクリプトまたはインライン コマンドを使用します。 たとえば、Linux では、wgetcurl を使用できます。 Windows では、Invoke-WebRequest を使用できます。

ビルダーがエラー コード 1190 でWindows-Restart の実行に継続的に失敗する

エラー

[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 Server 2016 に基づくイメージでは、Windows Update のステップが早期に宣言されています。

解決策

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 Compute Gallery にレプリケートされるのを待っている間に、VM Image Builder がタイムアウトしました。 イメージがギャラリーに挿入されている場合は、イメージのビルドは成功したものと見なすことができます。 ただし、VM Image Builder は Azure Compute Gallery でのレプリケーションが完了するのを待っていたため、プロセス全体は失敗しました。 ビルドが失敗した場合でも、レプリケーションは続行されます。 ディストリビューションの 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

原因

リソースが枯渇しています。 この問題は、既定のビルド VM サイズ D1_V2 を使用して実行されている Windows Update でよく見られます。

解決策

ビルド VM のサイズを増やします。

ビルドは完了したが、成果物が作成されなかった

警告

[<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.\""
  },

原因

アクセス許可がありません。

解決策

VM Image Builder に必要なアクセス許可がすべてあることを確認します。

アクセス許可の構成の詳細については、「Azure CLI を使用して VM Image Builder のアクセス許可を構成する」または「PowerShell を使用して VM Image Builder のアクセス許可を構成する」をご覧ください。

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 VM のサイズによるタイミングの問題が原因である可能性があります。 カスタマイズが制限され、3 秒未満で実行される場合、プロビジョニング解除のために VM Image Builder によって Sysprep コマンドが実行されます。 VM Image Builder のプロビジョニング解除時に、Sysprep コマンドによって WindowsAzureGuestAgent がチェックされますが、完全にインストールされていなくてタイミングの問題の原因になる可能性があります。

解決策

タイミングの問題を回避するには、VM サイズを増やすか、60 秒の PowerShell スリープ カスタマイズを追加します。

未登録の Azure Container Instances プロバイダー

エラー

Azure Container Instances provider not registered for your subscription.

原因

テンプレート サブスクリプションに Azure Container Instances プロバイダーが登録されていません。

ソリューション

テンプレート サブスクリプションの Azure Container Instances プロバイダーを登録し、Azure CLI コマンドまたは PowerShell コマンドを追加します。

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

Azure Container Instances のクォータを超えた

エラー

Azure Container Instances quota exceeded"

原因

お使いのサブスクリプションには、Azure Image Builder でイメージを正常にビルドするのに十分な Azure Container Instances (ACI) クォータがありません。

ソリューション

次のようにして、Azure Image Builder で ACI クォータを使用できるようにすることができます。

  • サブスクリプションで他の目的に使われている Azure Container Instances を調べ、必要のないインスタンスを削除して、Azure Image Builder がクォータを使用できるようにします。
  • Azure Image Builder では、ビルドの実行中に一時的にのみ ACI がデプロイされます。 これらのインスタンスは、ビルドが完了すると削除されます。 サブスクリプションで同時にビルドされているイメージが多すぎる場合は、イメージ ビルドの一部を遅延することを検討できます。 これにより、サブスクリプションでの ACI の同時使用が減ります。 トリガーを使った自動イメージ ビルド用にイメージ テンプレートが設定されている場合、このような失敗したビルドは Azure Image Builder によって自動的に再試行されます。
  • サブスクリプションの現在の ACI 制限が低すぎてイメージ ビルドのシナリオをサポートできない場合は、ACI クォータの引き上げを要求できます。

Note

Isolated Image Builds には、ACI リソースが必要です。

一定期間にデプロイされた Azure Container Instances が多すぎる

エラー

"Too many Azure Container Instances deployed within a period of time" (一定期間にデプロイされた Azure Container Instances が多すぎます)

原因

お使いのサブスクリプションには、Azure Image Builder でイメージの同時ビルドを正常に行うのに十分な Azure Container Instances (ACI) クォータがありません。

ソリューション

次の操作を実行できます。

  • 失敗したビルドを、同時に行う数を減らして再試行してください。
  • サブスクリプションの現在の ACI 制限が低すぎてイメージ ビルドのシナリオをサポートできない場合は、ACI クォータの引き上げを要求できます。

Isolated Image Builds のエラー

エラー

Isolated Image Builds が原因で、Azure Image Builder のビルドが失敗しています。

原因

Azure Image Builder のビルドは、このドキュメントの他の場所で説明されている理由により失敗する可能性があります。 ただし、シナリオ、サブスクリプションのクォータ、または何らかの予期しないサービス エラーによっては、Isolated Image Builds が原因でビルドが失敗する可能性がわずかにあります。 詳しくは、Isolated Image Builds に関する記事をご覧ください。

ソリューション

Isolated Image Builds が原因でビルドが失敗したと判断した場合は、次のようにできます。

  • 「前提条件」セクションで示されているリソース (具体的には、Azure Container Instances、Azure Virtual Networks、Azure プライベート エンドポイント) のデプロイをブロックしている Azure Policy がないことを確認します。
  • すべての同時イメージ ビルドをサポートするのに十分な Azure Container Instances のクォータが、お使いのサブスクリプションにあることを確認します。 詳しくは、Azure Container Instances のクォータ超過に関する説明をご覧ください。

Azure Image Builder では、現在、Isolated Image Builds のデプロイが行われています。 Isolated Image Builds に関連付けられた特定のイメージ テンプレートはなく、同じイメージ テンプレートでもビルドにより Isolated Image Builds が利用される場合と使用されない場合があります。 次のようにすることで、一時的に、Isolated Image Builds を使わずにビルドを実行できます。

  • ビルドを再試行します。 イメージ テンプレートは Isolated Image Builds 機能に関連付けられていないため、ビルドを再試行すると、Isolated Image Builds なしで再実行される可能性が高くなります。

これらのどの解決策でもイメージ ビルドの失敗が軽減されない場合は、Azure サポートに連絡して、お使いのサブスクリプションを Isolated Image Builds から一時的にオプトアウトできます。 詳細については、「Azure サポート リクエストを作成する方法」を参照してください。

Note

Isolated Image Builds は、最終的にすべてのリージョンとテンプレートで有効になります。 そのため、上記の軽減策は一時的なものと考え、ビルド エラーの根本的な原因に対処する必要があります。

コンテキストの取り消しコンテキストが取り消された後、ビルドがキャンセルされます

エラー

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

原因

VM Image Builder では、ポート 22 (Linux) または 5986 (Windows) を使用してビルド VM に接続します。 これはイメージのビルド中にサービスがビルド VM から切断された場合に発生します。 切断の理由はさまざまですが、スクリプトでファイアウォールを有効にしたり構成したりすると、前述のポートがブロックされる可能性があります。

解決策

ファイアウォールの変更または有効化、あるいは SSH または WinRM への変更についてスクリプトを確認し、前述のポートでサービスとビルド VM の間の常時接続を確立できるように変更してください。 詳細については、VM Image Builder のネットワーク オプションに関するページをご覧ください。

ビルドの早い段階でログに記録される 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 分に設定されています。

解決策

VM Image Builder テンプレートを作成する」で説明されているように、タイムアウトは、既定値を使用するには 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 つずつ削除します:

  1. プライベート エンドポイント接続。 これは、プライベート リンク サービス リソース ページの [プライベート エンドポイント接続] タブに移動することで、プライベート リンク サービス リソースで確認できます。
  2. プライベート リンク サービス。
  3. ネットワーク インターフェイスとロード バランサー。
  4. リソース グループ。
  5. イメージ テンプレート。

追加のサポートについては、Azure サポートに連絡して、スタックした削除エラーを解決できます。

更新要求で配布ターゲットが見つからない

エラー

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

原因

このエラーは、Patch 要求本文で既存の配布ターゲットが見つからない場合に発生します。

解決策

配布配列には、すべての配布ターゲット、つまり新しいターゲット (存在する場合)、変更のない既存のターゲット、および更新されたターゲットが含まれている必要があります。 Patch 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 タスク

タスクのトラブルシューティング

タスクは、カスタマイズ中にエラーが発生した場合にのみ失敗します。 この場合、タスクは失敗を報告し、ステージング リソース グループとログを残して問題を特定できるようにします。

ログを見つけるには、テンプレート名を知っている必要があります。 [パイプライン]>[失敗したビルド] に移動し、VM Image Builder 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 portal に移動し、リソース グループでテンプレート名を検索し、IT_* と入力してリソース グループを探します。
  2. ストレージ アカウント名 >[BLOB]>[コンテナー]>[ログ] を選択します。

成功したビルドのトラブルシューティング

場合によっては、成功したビルドを調査し、そのログを確認することが必要になる場合があります。 前述のように、イメージのビルドが成功した場合、ログを含むステージング リソース グループはクリーンアップの一部として削除されます。 ただし、自動クリーンアップを回避するには、インライン コマンドの後に sleep を導入し、ビルドが一時停止されているときにログを表示します。 そのためには、次の手順を実行します。

  1. Write-Host/Echo "Sleep" を追加してインライン コマンドを更新します。 これにより、ログを検索する時間ができます。
  2. Start-Sleep または Sleep Linux コマンドを使用して、少なくとも 10 分の sleep 値を追加します。
  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 ユーザー エージェントによって取り消されました。 最も可能性が高いのは、Azure DevOps の機能により、1 時間のタイムアウトが発生した場合です。 プライベート プロジェクトとエージェントを使用している場合は、60 分のビルド時間が得られます。 ビルドがタイムアウトを超えた場合、DevOps によって実行中のタスクが取り消されます。

Azure DevOps の機能と制限事項の詳細については、「Microsoft によってホストされるエージェント」を参照してください。

解決策

独自の DevOps エージェントをホストするか、ビルドの時間を短縮することができます。 たとえば、Azure Compute Gallery に配布する場合は、それらを 1 つのリージョンにレプリケートしたり、非同期にレプリケートしたりできます。

Windows ログオンが遅い

エラー

このエラーは、VM Image Builder を使用して Windows 10 イメージを作成し、イメージから VM を作成してから、リモート デスクトップ プロトコル (RDP) を使用するときに発生する可能性があります。 最初のログオン画面で数分待つと、ブルー スクリーンに次のメッセージが表示されます。

Please wait for the Windows Modules Installer

解決策

  1. イメージ ビルドで、次のことを確認します。

    • 最後のカスタマイズとして Windows 再起動カスタマイザーを追加することで、必要な未完了が存在しない。
    • すべてのソフトウェアのインストールが完了している。
  2. /mode:vm オプションを、VM Image Builder が使用する既定値 Sysprep に追加します。 詳細については、「VM Image Builder から作成された VM が正常に作成されない」の "コマンドをオーバーライドする" セクションを参照してください。

VM Image Builder イメージから作成された VM が正常に作成されない

既定の VM Image Builder では、イメージを一般化するため、各イメージ カスタマイズ フェーズの最後にプロビジョニング解除コードが実行されます。 イメージを一般化するには、複数の VM を作成するために再利用できるように設定します。 プロセスの一環として、ホスト名、ユーザー名などの VM 設定を渡すことができます。 Windows では VM Image Builder によって Sysprep が実行され、Linux では VM Image Builder によって waagent -deprovision が実行されます。

Windows の場合、VM Image Builder では汎用の Sysprep コマンドが使用されます。 ただし、このコマンドは Windows のすべての一般化を成功させるのに適しているとは限りません。 VM Image Builder を使用すると、Sysprep コマンドをカスタマイズできます。 VM Image Builder は、Sysprep コマンドを正常に実行するイメージ自動化ツールであることに注意してください。 ただし、イメージを再利用できるようにするには、異なる Sysprep コマンドが必要になる場合があります。 Linux の場合、VM Image Builder では汎用の waagent -deprovision+user コマンドが使用されます。 詳細については、Microsoft Azure Linux エージェントのドキュメントを参照してください。

既存のカスタマイズを移行していて、さまざまな Sysprep コマンドまたは waagent コマンドを使用している場合は、VM Image Builder の汎用コマンドを使用してみることができます。 VM の作成が失敗する場合は、前の Sysprep または waagent コマンドを使用します。

VM Image Builder を使用して Windows カスタム イメージを正常に作成したが、イメージから VM を正常に作成できなかったとします。 たとえば、VM の作成が完了しないか、タイムアウトします。この場合は、次のいずれかの操作を行います。

  • 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 またはシェル スクリプトのプロビジョナーを使って正確なファイル名のコマンド ファイルを作成し、前に示したディレクトリに置きます。 VM Image Builder によってこれらのコマンドが読み取られ、出力が customization.log ファイルに書き込まれます。

サポートを受ける

ガイダンスを参照しても問題を解決できない場合は、サポート ケースを開くことができます。 正しい製品とサポートのトピックを選択してください。 そうすることで、Azure VM Image Builder サポート チームに確実に接続できます。

ケース製品を選択します。

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

次のステップ

詳細については、VM Image Builder の概要に関する記事を参照してください。