次の方法で共有


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

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

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

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

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

前提条件

ビルドを作成するための前提条件は次のとおりです。

  • VM Image Builder サービスは、Windows リモート管理 (WinRM) または Secure Shell (SSH) を使用して、ビルド仮想マシン (VM) と通信します。 ビルドの一部としてこれらの設定を無効にしないでください

  • VM Image Builder は、ビルドの一部として、ステージング リソース グループにリソースを作成します。 リソースの正確な一覧は、イメージ テンプレートが指定する ネットワーク構成 によって異なります。 Azure Policy が VM Image Builder による必要なリソースの作成または使用を妨げていないことを確認してください。

  • Azure Policy が、ビルド VM やその他のステージング リソース (Azure 拡張機能やタグの変更など) に意図しない機能をインストールしないようにします。

  • VM Image Builder に、イメージの読み取り/書き込みとストレージ アカウントへの接続を行うための適切なアクセス許可があることを確認します。 詳細については、Azure CLI または Azure PowerShell のアクセス許可に関するドキュメントを参照してください。

  • スクリプトまたはインライン コマンドがエラー (ゼロ以外の終了コード) で失敗すると、VM Image Builder でのビルドは失敗します。 カスタム スクリプトをテストし、エラーなしで実行 (終了コード 0) またはユーザー入力が必要であることを確認します。 詳細については、「VM Image Builder と PowerShell を使用して Azure Virtual Desktop イメージを作成する」を参照してください。

  • サブスクリプションに Azure Container Instances の十分な クォータ があることを確認します。

    各イメージ ビルドは、ステージング リソース グループに最大 1 つの一時的な Azure Container Instances リソース (4 つの標準コア) をデプロイできます。 これらのリソースは、 分離イメージ ビルドに必要です

メモ

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

  • WINDOWS 用の CIS セキュリティ強化イメージは、VM イメージ ビルダー ビルドの前提条件である WinRM 接続を中断する可能性があります。
  • Linux 用の CIS 強化版イメージは、chmod +x アクセス許可の問題が原因で失敗する可能性があります。

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

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

Azure CLI のコマンドを次に示します。

az image builder show --name $imageTemplateName  --resource-group $imageResourceGroup

Azure PowerShell のコマンドを次に示します。 Azure PowerShell を使用するには、 VM Image Builder PowerShell モジュールをインストールする必要があります。

Get-AzImageBuilderTemplate -ImageTemplateName  <imageTemplateName> -ResourceGroupName <imageTemplateResourceGroup> | Select-Object ProvisioningState, ProvisioningErrorMessage

バージョン 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."
  }
}

重要

API バージョン 2021-10-01 では、今後のすべての API リリースに含まれるエラー スキーマが変更されています。 Azure VM Image Builder の自動化がある場合は、API バージョン 2021-10-01 以降に切り替えるとき、新しいエラー出力に注意してください。

最新の API バージョンに切り替えた後は、以前のバージョンに戻さないようにすることをお勧めします。 元に戻す場合は、以前のエラー スキーマを生成するためにオートメーションをもう一度変更する必要があります。 今後のリリースでは、エラー スキーマが再び変更される予定はありません。

以下のセクションでは、イメージ テンプレートの一般的な送信エラーに関する問題解決のガイダンスについて説明します。

イメージ テンプレートの更新とアップグレードは現在サポートされていない

エラー

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

原因

テンプレートは既に存在します。

解決策

イメージ構成テンプレートを送信し、送信が失敗した場合、失敗したテンプレート成果物はまだ存在しています。 失敗したテンプレートを削除してください。

イメージ テンプレートで割り当てられたマネージド ID を使用できない

エラー

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 を 使用できない場合があります。

考えられる原因の 1 つは、VM Image Builder テンプレートでユーザーが指定したステージング リソース グループを使用し、イメージ テンプレートが削除される前にマネージド ID が削除されるということです。 (これは ステージング リソース グループ のシナリオです)。

解決策

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

ターゲット VM イメージ ビルダー テンプレートからマネージド ID を確認します。

az image builder identity show -g <template resource group> -n <template name> 

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

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

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

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

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

割り当てられたマネージド ID がリソースへのアクセスを許可されていない

エラー

Not authorized to access the resource: <resource-not-able-to-access>. Please check the user assigned identity has the correct permissions. For more details, go to https://aka.ms/azvmimagebuilderts.

原因

イメージ テンプレートに割り当てられた作成された マネージド ID には、エラー メッセージで共有されているリソースにアクセスするためのすべてのアクセス許可がありません。

解決策

ターゲット VM イメージ ビルダー テンプレートからマネージド ID を確認します。

az image builder identity show -g <template resource group> -n <template name> 

ID に対する ロールの割り当てを確認します。

az role assignment list --assignee <identity_client_id_or_principal_id>

必要なロールを割り当てます。 必要であれば、必要なアクセス許可が付与されたロールを作成してください。

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

ターミナル プロビジョニングの状態が "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'..

原因

ファイルの名前または場所が正しくないか、場所にアクセスできません。

解決策

ファイルにアクセスできることを確認します。 名前と場所が正しいことを確認します。

一部のファイル リポジトリでは、サポートされていない暗号スイートが使用され、VM Image Builder でダウンロード エラーが発生する可能性があります。 VM Image Builder による安全な暗号スイートとアクセシビリティを確保するために、Azure ストレージ アカウントにファイルとスクリプトを格納します。 Azure ストレージ アカウントにファイルを格納する方法の詳細については、「 ストレージ アカウントの概要」を参照してください。

ディスクの作成時に承認エラーが発生する

VM イメージ ビルダーのビルドが失敗し、次の例のような承認エラーが発生します。

エラー

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 ソース イメージを使用して VM Image Builder サービスに指定しようとすると発生します。

解決策

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

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

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

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

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

ポータルでこのソリューションを実装するには、「Azure portal を 使用して Azure ロールを割り当てる」の手順に従います。

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

イメージ ビルドエラーの場合は、 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 が Azure Container Instances で生成するライブ ログにアクセスできます。 これらのログは、ビルド プロセスに関するリアルタイムの分析情報を提供します。 問題を特定したり、ビルドが想定どおりに進んでいるかどうかを確認したりするのに役立ちます。

ライブ ログを見つけて表示するには:

  1. イメージのビルド プロセスを開始します。

  2. Azure portal に移動し、[ リソース グループ] を選択します。 イメージビルドを始めたサブスクリプションでフィルターしてください。

  3. イメージ ビルドに関連付けられているステージング リソース グループを見つけて選択します。 このリソース グループには、VM Image Builder サービスのビルド リソースが含まれています。 ステージング リソース グループの詳細については、「プロパティ: stagingResourceGroup」を参照してください。

  4. このリソース グループ内で、 vmimagebuilder-build-container-**********という名前のリソースを探します。 表示されない場合は、数分待ってからページを更新します。

  5. 左側のウィンドウの [設定] で、[ コンテナー] を選択します。

  6. [ ログ ] タブに移動して、イメージのビルド プロセス中にライブ ログを表示します。

ログが表示されない場合は、数分後にコンテナーを更新してみてください。

イメージのビルド後にカスタマイズログや検証ログをダウンロードする

イメージのビルドが完了すると、カスタマイズと検証のログは、VM Image Builder サービスによって作成されたステージング リソース グループのストレージ アカウント内のコンテナーに格納されます。 ステージング リソース グループの詳細については、「プロパティ: stagingResourceGroup」を参照してください。

customization.logまたはvalidation.log ファイルを見つけてダウンロードするには:

  1. Azure portal で、VM Image Builder サービスによって作成されたステージング リソース グループ内のストレージ アカウントをフィルター処理して、関連するストレージ アカウントに移動します。

  2. ストレージ アカウントで、[ データ ストレージ] に移動します。

  3. [ コンテナー ] オプションを選択し、 packerlogs コンテナーを選択します。

  4. packerlogs コンテナー内では、イメージ ビルドが複数回実行された場合に複数のフォルダーが表示されます。 これらのフォルダーは、最も古いビルドから最新のビルドの順番で配置されます。 目的のビルドに対応するフォルダーを選択します。

  5. 選択したフォルダー内で、 customization.log または validation.log ファイルを選択し、[ ダウンロード ] を選択してその内容をダウンロードします。

カスタマイズログの段階

これは詳細ログです。 イメージのビルドについて説明します。これには、Azure コンピューティング ギャラリーのレプリケーションなど、イメージの配布に関する問題が含まれます。 これらの問題は、イメージ テンプレートの状態のエラー メッセージに表示されます。

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

  1. Azure Resource Manager テンプレートを使用して、ビルド 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 has finished
    
  5. プロビジョニング解除。 VM Image Builder では、非表示のカスタマイザーが追加されます。 この手順では、プロビジョニング解除のために VM を準備します。 Windows では、(c:\DeprovisioningScript.ps1 を使用して) Sysprep実行されます。 Linux では、(/tmp/DeprovisioningScript.sh を使用して) waagent-deprovision実行されます。

    次に例を示します。

    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 と Azure Firewall でリモート リソースへの接続が許可されていることを確認します。
  • 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 キー コンテナーを使用した結果です。 現時点では、VM イメージ ビルダーはこの構成をサポートしていません。

解決策

パブリック アクセスが有効になっているキー コンテナーを作成する必要があります。

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

原因

packer ビルド コマンドの失敗は、カスタマイズエラーです。

解決策

ログを確認して、カスタマイザーのエラーを見つけます。 (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 ファイルを確認します。 実行する最後のカスタマイザーを特定します。 ログの下部から (telemetry)を検索します。

  2. スクリプトのカスタマイズを確認します。 カスタマイズでは、quiet オプションなど、コマンドのユーザー操作が抑制されていない場合があります。 たとえば、apt-get install -y では、スクリプトの実行でユーザーの操作が待機されます。

  3. File カスタマイザーを使用して 20 MB を超える成果物をダウンロードする場合は、回避策のセクションを参照してください。

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

  5. カスタマイズにより多くの時間が必要になると予想される場合は、 buildTimeoutInMinutesの値を大きくします。 既定値は 4 時間です。

  6. ギガバイト単位のファイルのダウンロードなど、リソースを集中的に使用するアクションがある場合は、基になるビルド 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 では、 wget または curlを使用できます。 Windows では、Invoke-WebRequest を使用できます。

Windows の再起動がエラー コード 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 Update の手順は、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}

原因

VM Image Builder は、イメージが追加されて Azure コンピューティング ギャラリーにレプリケートされるのを待っている間にタイムアウトしました。

イメージがギャラリーに挿入されている場合は、イメージのビルドは成功したものと見なすことができます。 ただし、VM Image Builder が 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 Update が既定のビルド VM サイズ (D1_V2) で実行されている場合に一般的に発生します。

解決策

ビルド 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: az provider register -n Microsoft.ContainerInstance
  • Azure PowerShell: Register-AzResourceProvider -ProviderNamespace Microsoft.ContainerInstance

サブスクリプションが Azure Container Instances クォータを超えました

エラー

Azure Container Instances quota exceeded

原因

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

解決策

次のアクションを実行して、AZURE Container Instances クォータを VM Image Builder で使用できるようにします。

  • サブスクリプション内の Azure Container Instances のその他の使用状況を検索します。 不要なインスタンスを削除して、VM Image Builder でクォータを使用できるようにします。

  • VM Image Builder は、ビルド中にのみ Azure Container Instances を一時的にデプロイします。 これらのインスタンスは、ビルドの完了後に削除されます。

    サブスクリプションで実行されている同時イメージ ビルドが多すぎる場合は、イメージ ビルドの一部を遅延することを検討できます。 この遅延により、サブスクリプション内の Azure Container Instances の同時使用が減ります。

    イメージ テンプレートがトリガーを介して自動イメージ ビルド用に設定されている場合、VM Image Builder は、このような失敗したビルドを自動的に再試行します。

  • サブスクリプションの現在の Azure Container Instances の制限が低すぎてイメージ構築シナリオをサポートできない場合は、 Azure Container Instances クォータの引き上げを要求できます。

メモ

分離イメージ ビルドには、Azure Container Instances リソースが必要です。

一定期間内にデプロイされる Azure Container Instances リソースが多すぎます

エラー

"一定期間内にデプロイされた Azure Container Instances が多すぎます。"

原因

VM Image Builder が同時にイメージを正常にビルドするのに十分な Azure Container Instances クォータがサブスクリプションにありません。

解決策

次のソリューションを試すことができます。

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

分離イメージ ビルド機能によってエラーが発生する

エラー

分離されたイメージ ビルドにより、VM イメージ ビルダーのビルドが失敗します。

原因

VM イメージ ビルダーのビルドは、この記事の他の場所に記載されている理由で失敗する可能性があります。 ただし、シナリオ、サブスクリプション クォータ、または予期しないサービス エラーによっては、Isolated Image Build が原因でビルドが失敗する可能性が少しあります。 詳しくは、Isolated Image Builds に関する記事をご覧ください。

解決策

Isolated Image Build が原因でビルドが失敗したと判断した場合は、次のことを確認します。

VM Image Builder は現在、分離イメージ ビルドのデプロイ中です。 特定のイメージ テンプレートは分離イメージ ビルドに関連付けられず、同じイメージ テンプレートが異なるビルド中に分離イメージ ビルドを使用する場合と使用しない場合があります。

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

障害が発生したイメージ ビルドを軽減するソリューションがない場合は、Azure サポートに連絡して、Isolated Image Builds からサブスクリプションを一時的にオプトアウトできます。 詳細については、「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

原因

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 イメージ ビルダー テンプレートの作成で説明されているように、既定値を使用するにはタイムアウトを 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. プライベート エンドポイント接続。 この接続は、Azure Private Link サービス リソースのページの [プライベート エンドポイント接続 ] タブに移動して見つけることができます。
  2. Private Link サービス。
  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 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.

原因

このエラーは、配布ターゲットに必須フィールドがない場合に発生します。

解決策

要求を作成するときは、変更がない場合でも、必ず配布ターゲットのすべての必須フィールドを指定してください。

Azure DevOps のトラブルシューティング

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

ログを見つけるには:

  1. テンプレート名を見つけます。 Pipeline>失敗したビルドに移動し、VM Image Builder で Azure DevOps タスクを詳細に調査します。 template name値をメモします。

    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
    
  2. Azure portal に移動し、リソース グループでテンプレート名を検索し、「 IT_」と入力してリソース グループを検索します。

  3. ストレージ アカウント名を選択し、 blobs>containers>logs を選択します。

場合によっては、成功したビルドを調査し、そのログを確認することが必要になる場合があります。 前述のように、イメージのビルドが成功した場合、ログを含むステージング リソース グループはクリーンアップの一部として削除されます。 自動クリーンアップを回避するには、インライン コマンドの後に 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 分のビルド時間が得られます。 ビルドがタイムアウトを超えた場合、Azure DevOps は実行中のタスクをキャンセルします。

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

解決策

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

Windows ログオンが遅い

エラー

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

Please wait for the Windows Modules Installer

解決策

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

    • 最後のカスタマイズとして Windows 再起動カスタマイザーを追加することで、未処理の再起動は必要ありません。
    • すべてのソフトウェアのインストールが完了している。
  2. VM Image Builder で使用される既定のSysprep コマンドに/mode:vm オプションを追加します。 詳細については、この記事の後半で説明するコマンドのオーバーライドを参照してください。

VM Image Builder から正常に作成されなかった VM のトラブルシューティング

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

Windows では、VM イメージ ビルダーによって汎用の 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

Windows 用 Sysprep コマンド

Write-Output '>>> Waiting for GA Service (RdAgent) to start ...'
while ((Get-Service RdAgent).Status -ne 'Running') { Start-Sleep -s 5 }
Write-Output '>>> Waiting for GA Service (WindowsAzureTelemetryService) to start ...'
while ((Get-Service WindowsAzureTelemetryService) -and ((Get-Service WindowsAzureTelemetryService).Status -ne 'Running')) { Start-Sleep -s 5 }
Write-Output '>>> Waiting for GA Service (WindowsAzureGuestAgent) to start ...'
while ((Get-Service WindowsAzureGuestAgent).Status -ne 'Running') { Start-Sleep -s 5 }
Write-Output '>>> Sysprepping VM ...'
if( Test-Path $Env:SystemRoot\system32\Sysprep\unattend.xml ) {
  Remove-Item $Env:SystemRoot\system32\Sysprep\unattend.xml -Force
}
& $Env:SystemRoot\System32\Sysprep\Sysprep.exe /oobe /generalize /quiet /quit
while($true) {
  $imageState = (Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\State).ImageState
  Write-Output $imageState
  if ($imageState -eq 'IMAGE_STATE_GENERALIZE_RESEAL_TO_OOBE') { break }
  Start-Sleep -s 5
}
Write-Output '>>> Sysprep complete ...'

Linux のプロビジョニング解除コマンド

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