次の方法で共有


Azure DevTest Labs のラボ仮想マシンでのアーティファクトのトラブルシューティング

この記事では、Azure DevTest Labs 仮想マシン (VM) リソースでのアーティファクトに関するエラーについて、考えられる原因とトラブルシューティングの手順を説明します。

成果物は、VM の作成中または作成後にラボ VM にインストールできるツール、アクション、またはソフトウェアです。 ラボの所有者は、必須の成果物を事前に選択して、作成時にすべてのラボ VM に適用できます。また、ラボのユーザーは、自分が所有している VM に成果物を適用できます。 考えられるいくつかの問題により、ラボにアーティファクトがインストールおよび適用できない、またはラボ VM で正しく実行されないことがあります。

アーティファクトが応答を停止するように見える場合は、まずプロセスがスタックしている理由を判断します。 アーティファクトのインストールは、初期要求中にブロックされる、または要求の実行中に失敗することがあります。 Azure portal から、またはアーティファクトが失敗した VM から、アーティファクトの失敗をトラブルシューティングできます。

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

アーティファクトがラボ VM に正常に適用されない場合は、まず Azure portal で VM の状態を調べます。 VM の状態に関する情報を確認し、実行中であることを確認し、成果物を適用できることを確認できます。 ラボ VM のアクティビティ ログ データには、インストール プロセスに関するエントリが表示されます。 エントリから、アーティファクトのエラーに関する情報を見つけることができます。

VM の状態を確認する

次の手順を実行して、Azure portal で VM の状態を確認します。

  1. DevTest Labs ラボ VM の [概要 ] ページに移動し、マシンの状態が [実行中] であることを確認します。

    DevTest Labs 仮想マシンが実行されていることを確認する方法を示すスクリーンショット。

  2. [ 成果物] を選択して、ラボ VM の成果物の一覧を開きます。

    ラボ仮想マシンでアーティファクト一覧を開く方法を示すスクリーンショット。

  3. [ Apply artifacts]\(アーティファクトの適用\ ) オプションをオンにし、ラボ VM が適用された成果物を受け入れる準備ができていることを確認します。

    DevTest Labs 仮想マシンに成果物を適用できることを確認する方法を示すスクリーンショット。

    [ 成果物の適用 ] オプションが淡色表示の場合、ラボ VM に成果物を適用することはできません。ページに通知メッセージが表示されます。

    成果物を DevTest Labs 仮想マシンに適用できないことを示すメッセージのスクリーンショット。

PowerShell コマンドを使用する

また、Azure PowerShell を使用して、ラボ VM が適用された成果物を受信できるかどうかを確認することもできます。

次の GET コマンドは、TRUE または FALSE の値を持つ canApplyArtifacts フラグを返します。 コマンドを実行するには、 $SubscriptionId パラメーターをサブスクリプション ID、 $LabName/$VmName パラメーターをラボ名と VM 名に置き換え、 $LabRgName パラメーターをラボ リソース グループ名に置き換えます。

Select-AzSubscription -SubscriptionId $SubscriptionId | Out-Null
$vm = Get-AzResource `
        -Name "$LabName/$VmName" `
        -ResourceGroupName $LabRgName `
        -ResourceType 'microsoft.devtestlab/labs/virtualmachines' `
        -ApiVersion '2018-10-15-preview' `
        -ODataQuery '$expand=Properties($expand=ComputeVm)'
$vm.Properties.canApplyArtifacts

失敗したアーティファクトの詳細を調べる

アーティファクトは応答を停止し、最終的にはラボ VM のアーティファクトの一覧に "Failed" と表示されます。

次の手順を実行して、失敗したアーティファクトを調査します。

  1. ラボ VM の [成果物 ] リスト ページに移動し、 失敗状態 の成果物を選択します。

    ラボ仮想マシンの失敗したアーティファクトを示すスクリーンショット。

  2. [Artifacts] の詳細ビューが開きます。 詳細には、アーティファクトの失敗に関する、デプロイ メッセージ拡張メッセージ情報が含まれます。

    デプロイと拡張メッセージ情報など、失敗したアーティファクト詳細を示すスクリーンショット。

アクティビティ ログを調べる

成果物をインストールするために、DevTest Labs はカスタム スクリプト拡張機能 (CSE) の使用を要求する Azure Resource Manager (ARM) テンプレートを作成してデプロイします。 このレベルのエラーは、サブスクリプションとラボ VM を含むリソース グループのアクティビティ ログに表示されます。

Note

アクティビティ ログを表示する場合、インストール プロセス エントリを展開し、失敗に関するエラー概要の確認が必要になる場合があります。

次の手順を実行して、ラボ VM での成果物のインストールまたはアプリケーションに関連するエラーがないか、アクティビティ ログ エントリを調べます。

  1. ラボ VM の [アクティビティ ログ ] ページに移動し、 失敗状態 の成果物を見つけます。

    ラボ VM で失敗した成果物のアクティビティ ログ エントリを見つける方法を示すスクリーンショット。

  2. エントリを選択して詳細ウィンドウを開き、ログ情報を表示します。

    • アーティファクトをラボ VM に直接適用しようとしている場合は、 仮想マシン拡張機能の作成または更新 のインストール プロセスに関連するエラーを探します。

    • VM を作成し、プロセス中にアーティファクトを適用する場合は、仮想マシンを作成または更新するインストール プロセスで報告されたエラーを探します。

    ペインのタイトルは、エントリ タイトルに対応します。たとえば、 仮想マシンに成果物を適用します。

    失敗したアーティファクトのアクティビティ ログ エントリ詳細を表示する方法を示すスクリーンショット。

  3. エラーのページで [JSON] を選択し、JSON ペイロードの内容を確認します。 JSON ドキュメントの最後にエラーが表示されます。

    失敗したアーティファクトのアクティビティ ログ エントリで、JSON の詳細を表示する方法を示すスクリーンショット。

アーティファクト リポジトリとラボ ストレージ アカウントを調査する

DevTest Labs によって成果物が適用されるとき、接続されたリポジトリから成果物の構成とファイルが読み取られます。 ラボ VM へのアーティファクトのインストールまたは適用に失敗した場合は、リポジトリ アクセスに関する問題に起因する場合があります。

既定では、DevTest Labs は DevTest Labs のパブリック成果物リポジトリにアクセスできます。 また、ラボをプライベート リポジトリに接続して、カスタム成果物にアクセスすることもできます。 構成によっては、ラボの VM がアーティファクト リポジトリに直接アクセスできない場合があります。 DevTest Labs は、ラボの初回初期化時に作成されたラボ ストレージ アカウントにアーティファクトをキャッシュします。

  • カスタム アーティファクトのインストールに失敗する場合は、プライベート リポジトリの個人用アクセス トークン (PAT) の有効期限が切れていないことを確認してください。 PAT の有効期限が切れると、アーティファクトの一覧は表示されず、そのリポジトリのアーティファクトを参照するスクリプトは失敗します。

  • ストレージ アカウントへのアクセスがブロックされている場合は、次のようなエラーが表示されることがあります。

    CSE Error: Failed to download all specified files. Exiting. Exception: Microsoft.WindowsAzure.Storage.StorageException: The remote server returned an error: (403) Forbidden. ---> System.Net.WebException: The remote server returned an error: (403) Forbidden.
    

    たとえば、VM から Azure Storage サービスへのトラフィックがブロックされると、このエラーが発生することがあります。 このエラーは、ラボ VM のリソース グループのアクティビティ ログに表示されます。

次の手順を実行して、Azure Storage アカウントへのリポジトリ接続の問題を特定します。

  1. 追加されたネットワーク セキュリティ グループ (NSG) を調べます。 すべての仮想ネットワークで NSG を自動的に構成するサブスクリプション ポリシーが追加された場合、ラボ VM の作成に使用される仮想ネットワークに影響します。

  2. すべての NSG ルールを確認します。

  3. ラボの既定のストレージ アカウントを確認します。

    既定のストレージ アカウントは、ラボ作成時に作成された最初のストレージ アカウントです。 通常、名前は文字 "a" で始まり、複数桁の数字で終わります: a<labname>#

    1. DevTest Labs ラボの [概要 ] ページに移動し、[ リソース ビジュアライザー] を選択します。

    2. 図で説明されている、名前付け規則に一致する名前 を持つa<labname>#を見つけます。

    3. ストレージ アカウント リソースの上にマウス ポインターを置き、i アイコンへのポインターを移動してポップアップ メニューを表示し、[表示] を選択します。

      DevTest Labs ラボ リソースでストレージ アカウントの [表示する] オプションを選択する方法を示すスクリーンショット。

    4. ストレージ アカウントの [概要 ] ページで、左側のメニューの [セキュリティとネットワーク ] セクションを展開し、[ ネットワーク] を選択します。

      DevTest Labs ラボ リソースでストレージ アカウントのネットワーク構成を表示する方法を示すスクリーンショット。

    5. [ファイアウォールと仮想ネットワーク] タブで、公衆ネットワーク アクセス オプションの構成を確認します。

      1. 選択した仮想ネットワークと IP アドレスから有効になっている場合は、許可されている IP アドレスの一覧に、ラボ VM の作成に使用できるラボの仮想ネットワークが表示されていることを確認します。

        ラボ リソース ストレージ アカウントで選択した仮想ネットワークと IP アドレスの選択から有効になっていることを示すスクリーンショット。

      2. それ以外の場合は、[ すべてのネットワークから有効] が選択されていることを確認します。

        ラボ リソース ストレージ アカウントで選択されている [すべてのネットワークから有効] オプションを示すスクリーンショット。

詳細なトラブルシューティングについては、「Azure Storage ファイアウォールおよび仮想ネットワークを構成する」をご覧ください。

ラボ マシンでのトラブルシューティング

アーティファクトが失敗したラボの VM に接続し、問題を調べることができます。

CSE ログ ファイルを検査する

次の手順を実行して、Windows VM の CSE ログ ファイルを表示します。

  1. 実行中の DevTest Labs ラボ VM に接続します。

  2. エクスプローラーで、 C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\<CSE バージョン>\Status\に移動します。 <CSE version> の例は 1.10.12 です。

    DevTest Labs の Windows 仮想マシン上の Status フォルダーの内容を示すスクリーンショット。

  3. エラーを表示するには、 STATUS ファイル ( 1.status など) を開いて検査します。

Linux VM でログ ファイルを検索する手順については、「Linux 仮想マシンで Azure CSE バージョン 2 を使用する」を参照してください。

Azure 仮想マシン エージェントの確認

ラボ VM の Azure 仮想マシン エージェント (VM エージェント) がインストールされ、準備ができていることを確認します。

VM が最初に起動された場合、または CSE が最初にインストールされアーティファクトを適用する要求を処理する場合に、VM で VM エージェントのアップグレードや、VM エージェントの初期化の待機が必要になることがあります。 VM エージェントは、初期化に長い時間がかかるサービスに依存する場合があります。

次の手順を実行して、VM エージェントが成果物の応答を停止しているかどうかを確認します。

  1. 実行中の DevTest Labs ラボ VM に接続します。

  2. エクスプローラーで、ラボ VM のログ ファイルを含むフォルダー ( C:\WindowsAzure\logs など) に移動します。

  3. "WaAppAgent.log" ファイルを開きます。

  4. ログ ファイルで、VM エージェントの開始、初期化の完了、最初のハートビートの送信を示すエントリを探します。 アーティファクトの問題が発生した前後のタイムスタンプのエントリを確認します。 次のスニペットは、ログ ファイルからのエントリの例を示しています。

    [00000006] [11/14/2019 05:52:13.44] [INFO]  WindowsAzureGuestAgent starting. Version 2.7.41491.949
    ...
    [00000006] [11/14/2019 05:52:31.77] [WARN]  Waiting for OOBE to Complete ...
    ...
    [00000006] [11/14/2019 06:02:30.43] [WARN]  Waiting for OOBE to Complete ...
    [00000006] [11/14/2019 06:02:33.43] [INFO]  StateExecutor initialization completed.
    [00000020] [11/14/2019 06:02:33.43] [HEART] WindowsAzureGuestAgent Heartbeat.
    

    この例では、VM エージェントの開始に 10 分 20 秒かかりました。 out-of-box-experience (OOBE) サービスの開始に長い時間がかかったため、遅延が発生しました。 VM エージェントの長い開始時刻により、アーティファクトの応答が停止しました。

Azure 拡張機能の一般情報については、「Azure 仮想マシンの拡張機能と特徴」をご覧ください。 トラブルシューティングのアイデアの詳細については、「Azure 仮想マシン エージェントの概要」をご覧ください。

スクリプトの問題を調べる

成果物のインストールが失敗するもう 1 つの理由は、成果物インストール スクリプトの記述方法が原因です。

スクリプトの潜在的な問題の例を次に示します。

  • スクリプトには必須のパラメーターがありますが、スクリプトの実行中に予期される値は渡されません。 このシナリオは、ユーザーが予期されるパラメーターを空白のままにすることが許可され、"artifactfile.json" 定義ファイルに既定値が指定されていない場合に発生することがあります。 その結果、スクリプトはユーザー入力を待機し、応答を停止します。 スクリプトにパラメーター値が必要な場合は、既定値を定義し、ユーザーに値の入力を要求することをお勧めします。

  • このスクリプトでは、スクリプトの実行中にユーザー アクションが必要です。 このシナリオは、ユーザーのアクション実行を待つ間、スクリプトの実行に長い遅延が生じた場合に発生することがあります。 ユーザーの介入を必要とせずにサイレントに動作するスクリプトを記述することをお勧めします。

次の手順を実行して、スクリプトによって成果物の応答が停止しているかどうかを確認します。

  1. 実行中の DevTest Labs ラボ VM に接続します。

  2. ファイルエクスプローラーを開きます。

  3. VM の成果物インストール スクリプトを含む ダウンロード フォルダー ( C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\<CSE バージョン>\Downloads\など) に移動します。 <CSE version> の例は 1.10.12 です。

    以降の手順では、このフォルダー内のスクリプトを操作するか、VM 上の作業フォルダーにスクリプトをコピーできます。

  4. VM の管理者特権でコマンド プロンプト ウィンドウを開きます。

  5. コマンド プロンプト ウィンドウでアーティファクト インストール スクリプトを実行します。

    スクリプト プロンプトに従って、必要なパラメーター値を入力します。 ユーザー入力の不足またはユーザーアクションの遅延によって問題が発生したかどうかを調査するには、特定の動作を再現してみてください。

  6. スクリプトが予期しない動作または問題のある動作を示しているかどうかを判断します。

  7. 必要に応じて、ラボ VM でスクリプトを修正し、もう一度スクリプトを実行して問題が解決されたことを確認します。

アーティファクトの構造を確認する

カスタム成果物には適切な構造が必要です。 アーティファクト インストール スクリプト内のカスタム アーティファクトが正しい構造を実装していることを確認してください。 次のリソースは、このチェックを完了するのに役立つ情報を提供します。

スクリプトの更新を要求する

DevTest Labs のパブリック リポジトリでホストされている成果物について、スクリプトの修正提案を送信できます。 詳しくは、README ドキュメントの「Contributions (投稿)」セクションをご覧ください。

Get support

さらにヘルプが必要な場合は、次のいずれかのサポート チャネルを試してください。

  • Microsoft Community リソースで Azure DevTest Labs に関する情報を検索し、Stack Overflow の投稿を表示します。

  • @AzureSupport (カスタマー エクスペリエンスを向上させるための Microsoft Azure の公式アカウント) に連絡する。 Azure サポートにより、Azure コミュニティの回答、サポート、エキスパートと結び付けられます。