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 の状態を確認します。
DevTest Labs ラボ VM の [概要] ページに移動し、マシンが実行中であることを確認します。
[Artifacts] を選択し、ラボ VM のアーティファクトの一覧を開きます。
[Apply artifacts] (アーティファクトの適用) オプションをオンにし、ラボ VM で、適用されたアーティファクトを受け入れる準備ができているかどうかを確認します。
[Apply artifacts] (アーティファクトの適用) オプションがグレー表示されている場合、ラボ VM にアーティファクトを適用することはできません。ページには通知メッセージが表示されます。
PowerShell コマンドを使用する
また Azure PowerShell で、適用されたアーティファクトをラボ VM が受信できるかどうかを確認することもできます。
次の GET
コマンドは、TRUE または FALSE の値を持つ canApplyArtifacts
フラグを返します。 コマンドを実行するには、$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" と表示されます。
次の手順で、失敗したアーティファクトを調べます。
ラボ VM の[Artifacts] のリスト ページに移動し、"Failed" 状態のアーティファクトを選択します。
[Artifacts] の詳細ビューが開きます。 詳細には、アーティファクトの失敗に関する、デプロイ メッセージと拡張メッセージ情報が含まれます。
アクティビティ ログを調べる
成果物をインストールするため、DevTest Labs によって、カスタム スクリプト拡張機能 (CSE) の使用を要求する Azure Resource Manager (ARM) テンプレートが作成されてデプロイされます。 このレベルでのエラーは、サブスクリプションおよびラボ VM を含むリソース グループのアクティビティ ログで示されます。
Note
アクティビティ ログを表示する場合、インストール プロセス エントリを展開し、失敗に関するエラー概要の確認が必要になる場合があります。
次の手順で、ラボ VM でのアーティファクトのインストールまたはアプリケーションに関連するエラーがないか、アクティビティ ログ エントリを調べます。
ラボ VM の[アクティビティ ログ] ページから、"Failed" 状態のアーティファクトを見つけます。
エントリを選択して詳細ウィンドウを開き、ログ情報を表示します。
アーティファクトをラボ VM に直接適用しようとする場合は、仮想マシンの拡張機能を作成または更新するインストール プロセスに関連するエラーを探します。
VM を作成し、プロセス中にアーティファクトを適用する場合は、仮想マシンを作成または更新するインストール プロセスで報告されたエラーを探します。
ペインのタイトルは、アーティファクトを仮想マシンに適用するなどのエントリ タイトルに対応します。
エラーのページで [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 アカウントへのリポジトリ接続の問題を特定します。
追加されたネットワーク セキュリティ グループ (NSG) を調べます。 すべての仮想ネットワークで NSG を自動的に構成するサブスクリプション ポリシーが追加された場合、ラボ VM の作成に使用される仮想ネットワークに影響します。
すべての NSG ルールを確認します。
IP フロー検証を使って、NSG 規則により VM との間のトラフィックがブロックされているかどうかを判断します。
有効なセキュリティ グループ規則から、受信を許可する NSG 規則が存在していることを確認することもできます。 詳細については、「有効なセキュリティ規則を使用した VM トラフィック フローのトラブルシューティング」を参照してください。
ラボの既定のストレージ アカウントを確認します。
既定のストレージ アカウントは、ラボ作成時に作成された最初のストレージ アカウントです。 その名前は
a<labname>#
など、通常は文字 "a" で始まり、複数桁の数字で終わります。DevTest Labs ラボ VM の [概要] ページに移動し、リソース ビジュアライザーを選択します。
図で説明されている、名前付け規則に一致する名前
a<labname>#
を持つストレージ アカウントを見つけます。ストレージ アカウント リソースを選択してポップアップ メニューを表示し、[表示する] を選択します。
ストレージ アカウントの [概要] ページで、左側のメニューの [Security + networking] (セキュリティとネットワーク) セクションを展開し、[ネットワーク] を選択します。
[ファイアウォールと仮想ネットワーク] タブで、公衆ネットワーク アクセス オプションの構成を確認します。
[選択した仮想ネットワークと IP アドレスから有効] が選択されている場合は、許可されている IP アドレスの一覧に、ラボ VM の作成に使用できるラボの仮想ネットワークが表示されていることを確認します。
そうでない場合は、[すべてのネットワークから有効] が選択されていることを確認します。
詳細なトラブルシューティングについては、「Azure Storage ファイアウォールおよび仮想ネットワークを構成する」をご覧ください。
ラボ マシンでのトラブルシューティング
アーティファクトが失敗したラボの VM に接続し、問題を調べることができます。
カスタム スクリプト拡張機能のログ ファイルを調べる
次の手順で、Windows VM のカスタム スクリプト拡張機能 (CSE) ログ ファイルを表示します。
実行中の DevTest Labs ラボ VM に接続します。
エクスプローラー ウィンドウを開き、 C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\<CSE version>\Status\に移動します。 <CSE version> の例は
1.10.12
です。STATUS ファイルを開き、調べるために、1.status などのエラーを表示します。
Linux VM でログ ファイルを見つける方法については、「Linux 仮想マシンで Azure カスタム スクリプト拡張機能 v2 を使用する」をご覧ください。
Azure 仮想マシン エージェントの確認
ラボ VM の Azure 仮想マシン エージェント (VM エージェント) がインストールされ、準備ができていることを確認します。
VM が最初に起動された場合、または CSE が最初にインストールされアーティファクトを適用する要求を処理する場合に、VM で VM エージェントのアップグレードや、VM エージェントの初期化の待機が必要になることがあります。 VM エージェントは、初期化に長い時間がかかるサービスに依存する場合があります。
次の手順に従って、VM エージェントがアーティファクトの応答を停止しているかどうかを確認します。
実行中の DevTest Labs ラボ VM に接続します。
[ファイル エクスプローラー] ウィンドウを開き、ラボ VM のログ ファイルがあるフォルダー ("C:\WindowsAzure\logs" など) に移動します。
"WaAppAgent.log" ファイルを開きます。
ログ ファイルで、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" 定義ファイルに既定値が指定されていない場合に発生することがあります。 その結果、スクリプトはユーザー入力を待機し、応答を停止します。 スクリプトにパラメーター値が必要な場合は、既定値を定義し、ユーザーに値の入力を要求することをお勧めします。
このスクリプトでは、スクリプトの実行中にユーザー アクションが必要です。 このシナリオは、ユーザーのアクション実行を待つ間、スクリプトの実行に長い遅延が生じた場合に発生することがあります。 ユーザーの介入を必要とせずにサイレントに動作するスクリプトを作成することをお勧めします。
次の手順で、スクリプトによってアーティファクトの応答が停止されているかどうかを確認します。
実行中の DevTest Labs ラボ VM に接続します。
エクスプローラー ウィンドウを開きます。
VM のアーティファクト インストール スクリプトを含む Download フォルダー (C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\<CSE version>\Downloads\など) に移動します。 <CSE version> の例は
1.10.12
です。以降の手順では、このフォルダー内のスクリプトを操作することも、VM 上の作業フォルダーにスクリプトをコピーすることもできます。
VM の管理者特権でコマンド プロンプト ウィンドウを開きます。
コマンド プロンプト ウィンドウでアーティファクト インストール スクリプトを実行します。
スクリプト プロンプトに従って、必要なパラメーター値を入力します。 ユーザー入力の不足またはユーザーアクションの遅延によって問題が発生したかどうかを調査するには、特定の動作を再現してみてください。
スクリプトが予期しない動作または問題のある動作を示しているかどうかを判断します。
必要に応じて、ラボ VM 上のスクリプトを修正し、もう一度スクリプトを実行して問題が解決されたことを確認します。
アーティファクトの構造を確認する
カスタム成果物には適切な構造が必要です。 アーティファクト インストール スクリプト内のカスタム アーティファクトが正しい構造を実装していることを確認してください。 次のリソースは、このチェックを完了するのに役立つ情報を提供します。
- アーティファクトを正しく構築する方法については、カスタム アーティファクトの作成に関するページを参照してください。
- 適切な構造の成果物の例については、「Test parameter types (パラメーターの型のテスト)」成果物を参照してください。
- 成果物スクリプトの作成と修正について詳しくは、作成に関するページをご覧ください。
スクリプトの更新を要求する
DevTest Labs のパブリック リポジトリでホストされている成果物について、スクリプトの修正提案を送信できます。 詳しくは、README ドキュメントの「Contributions (投稿)」セクションをご覧ください。
サポートを受ける
さらにヘルプが必要な場合は、次のいずれかのサポート チャネルを試してください。
Azure DevTest Labs に関する情報と Stack Overflow のアクセス投稿については、Microsoft Community Web サイトのリソースを検索してください。
@AzureSupport (カスタマー エクスペリエンスを向上させるための Microsoft Azure の公式アカウント) に連絡する。 Azure サポートにより、Azure コミュニティの回答、サポート、エキスパートと結び付けられます。