Windows PowerShell を使用して Azure Stack Edge Pro FPGA デバイスを管理する
重要
Azure Stack Edge Pro FPGA デバイスは 2024 年 2 月に製造中止となります。 新しいデプロイをお考えの場合は、ワークロードに合わせて Azure Stack Edge Pro 2 または Azure Stack Edge Pro GPU デバイスを検討することをお勧めします。
Azure Stack Edge Pro FPGA ソリューションを使用すると、データを処理してネットワーク経由で Azure に送信できます。 この記事では、Azure Stack Edge Pro FPGA デバイスの構成と管理のタスクについて、いくつか説明します。 Azure portal、ローカル Web UI、または Windows PowerShell インターフェイスを使用してデバイスを管理できます。
この記事では、PowerShell インターフェイスを使用して行うタスクに重点を置いて説明します。
この記事には、次の手順が含まれています。
- PowerShell インターフェイスに接続する
- サポート パッケージを作成する
- 証明書のアップロード
- デバイスをリセットする
- デバイス情報を表示する
- コンピューティング ログを取得する
- コンピューティング モジュールの監視とトラブルシューティングを行う
PowerShell インターフェイスに接続する
デバイスにリモート接続する手順は、クライアントのオペレーティング システムによって異なります。
Windows クライアントからリモートで接続する
開始する前に、Windows クライアントで Windows PowerShell 5.0 以降が実行されていることを確認してください。
Windows クライアントからリモートで接続するには、次の手順に従います。
Windows PowerShell セッションを管理者として実行します。
Windows リモート管理サービスがクライアントで実行されていることを確認します。 コマンド プロンプトに、次のコマンドを入力します。
winrm quickconfig
詳細については、「Windows リモート管理のためのインストールと構成」をご覧ください。
デバイスの IP アドレスに変数を割り当てます。
$ip = "<device_ip>"
<device_ip>
を デバイスの IP アドレスに置き換えます。デバイスの IP アドレスをクライアントの信頼されたホスト一覧に追加するために、次のコマンドを入力します。
Set-Item WSMan:\localhost\Client\TrustedHosts $ip -Concatenate -Force
デバイスの Windows PowerShell セッションを開始します。
Enter-PSSession -ComputerName $ip -Credential $ip\EdgeUser -ConfigurationName Minishell
パスワードの入力を求められたら、入力します。 ローカル Web UI へのサインインに使用するパスワードと同じものを使用してください。 既定のローカル Web UI パスワードは Password1 です。 リモート PowerShell を使用してデバイスに正常に接続すると、次のサンプル出力が表示されます。
Windows PowerShell Copyright (C) Microsoft Corporation. All rights reserved. PS C:\WINDOWS\system32> winrm quickconfig WinRM service is already running on this machine. PS C:\WINDOWS\system32> $ip = "10.100.10.10" PS C:\WINDOWS\system32> Set-Item WSMan:\localhost\Client\TrustedHosts $ip -Concatenate -Force PS C:\WINDOWS\system32> Enter-PSSession -ComputerName $ip -Credential $ip\EdgeUser -ConfigurationName Minishell WARNING: The Windows PowerShell interface of your device is intended to be used only for the initial network configuration. Please engage Microsoft Support if you need to access this interface to troubleshoot any potential issues you may be experiencing. Changes made through this interface without involving Microsoft Support could result in an unsupported configuration. [10.100.10.10]: PS>
Linux クライアントからリモートで接続する
接続に使用する Linux クライアントで以下を行います。
- SSH リモート処理機能を取得するために、GitHub から Linux 用の最新の PowerShell Core をインストールします。
- NTLM モジュールから
gss-ntlmssp
パッケージのみをインストールします。 Ubuntu クライアントでは、次のコマンドを実行します。sudo apt-get install gss-ntlmssp
詳細については、「SSH 経由の PowerShell リモート処理」を参照してください。
NFS クライアントからリモートで接続するには、次の手順に従います。
PowerShell セッションを開くために、次のように入力します。
pwsh
リモート クライアントを使用して接続するために、次のように入力します。
Enter-PSSession -ComputerName $ip -Authentication Negotiate -ConfigurationName Minishell -Credential ~\EdgeUser
入力を求められたら、デバイスへのサインインに使用するパスワードを指定します。
Note
この手順は Mac OS では機能しません。
サポート パッケージを作成する
デバイスの問題が発生した場合は、システム ログからサポート パッケージを作成できます。 Microsoft サポートでは、このパッケージを使用して問題のトラブルシューティングを行います。 サポート パッケージを作成するには、次の手順に従います。
デバイスの PowerShell インターフェイスに接続します。
Get-HcsNodeSupportPackage
コマンドを使用してサポート パッケージを作成します。 コマンドレットの使用方法は次のとおりです。Get-HcsNodeSupportPackage [-Path] <string> [-Zip] [-ZipFileName <string>] [-Include {None | RegistryKeys | EtwLogs | PeriodicEtwLogs | LogFiles | DumpLog | Platform | FullDumps | MiniDumps | ClusterManagementLog | ClusterLog | UpdateLogs | CbsLogs | StorageCmdlets | ClusterCmdlets | ConfigurationCmdlets | KernelDump | RollbackLogs | Symbols | NetworkCmdlets | NetworkCmds | Fltmc | ClusterStorageLogs | UTElement | UTFlag | SmbWmiProvider | TimeCmds | LocalUILogs | ClusterHealthLogs | BcdeditCommand | BitLockerCommand | DirStats | ComputeRolesLogs | ComputeCmdlets | DeviceGuard | Manifests | MeasuredBootLogs | Stats | PeriodicStatLogs | MigrationLogs | RollbackSupportPackage | ArchivedLogs | Default}] [-MinimumTimestamp <datetime>] [-MaximumTimestamp <datetime>] [-IncludeArchived] [-IncludePeriodicStats] [-Credential <pscredential>] [<CommonParameters>]
このコマンドレットはデバイスからログを収集し、指定されたネットワークまたはローカル共有にこれらのログをコピーします。
使用されるパラメーターは次のとおりです。
-Path
- サポート パッケージのコピー先のネットワークまたはローカル パスを指定します。 ("必須")-Credential
- 保護されたパスにアクセスする視覚情報を指定します。-Zip
- ZIP ファイルを生成するように指定します。-Include
- サポート パッケージにコンポーネントを含めるように指定します。 指定しないと、Default
が想定されます。-IncludeArchived
- サポート パッケージにアーカイブ ログを含めるように指定します。-IncludePeriodicStats
- サポート パッケージに定期的な統計ログを含めるように指定します。
証明書のアップロード
適切な SSL 証明書により、暗号化された情報が適切なサーバーに確実に送信されます。 暗号化だけでなく、証明書により認証もできます。 デバイスの PowerShell インターフェイス経由で、信頼された独自の SSL 証明書をアップロードすることができます。
Set-HcsCertificate
コマンドレットを使用して証明書をアップロードします。 入力を求められたら、次のパラメーターを指定します。CertificateFilePath
- 形式の証明書を含む共有へのパス。CertificatePassword
- 証明書を保護するために使用するパスワード。Credentials
- 証明書を含む共有にアクセスするためのユーザー名 入力を求められたら、ネットワーク共有へのパスワードを指定します。このコマンドレットの使用例を次に示します。
Set-HcsCertificate -Scope LocalWebUI -CertificateFilePath "\\myfileshare\certificates\mycert.pfx" -CertificatePassword "mypassword" -Credential "Username"
ご使用の IoT Edge デバイスと、そのデバイスに接続できるダウンストリーム デバイスとの間にセキュリティで保護された接続を確立するために、IoT Edge 証明書をアップロードすることもできます。 次の 3 つのファイル (".pem" 形式) をインストールする必要があります。
- ルート CA 証明書または所有者 CA
- デバイス CA 証明書
- デバイスの秘密キー
このコマンドレットを使用して、IoT Edge 証明書をインストールする例を次に示します。
Set-HcsCertificate -Scope IotEdge -RootCACertificateFilePath "\\hcfs\root-ca-cert.pem" -DeviceCertificateFilePath "\\hcfs\device-ca-cert.pem\" -DeviceKeyFilePath "\\hcfs\device-private-key.pem" -Credential "username"
このコマンドレットを実行するときは、ネットワーク共有のためのパスワードを指定するよう求められます。
証明書の詳細については、Azure IoT Edge 証明書に関するページまたは「ゲートウェイに証明書をインストール」に移動してください。
デバイス情報を表示する
Get-HcsApplianceInfo
を使用してデバイスの情報を取得します。このコマンドレットの使用例を次に示します。
[10.100.10.10]: PS>Get-HcsApplianceInfo Id : b2044bdb-56fd-4561-a90b-407b2a67bdfc FriendlyName : DBE-NBSVFQR94S6 Name : DBE-NBSVFQR94S6 SerialNumber : HCS-NBSVFQR94S6 DeviceId : 40d7288d-cd28-481d-a1ea-87ba9e71ca6b Model : Virtual FriendlySoftwareVersion : Data Box Gateway 1902 HcsVersion : 1.4.771.324 IsClustered : False IsVirtual : True LocalCapacityInMb : 1964992 SystemState : Initialized SystemStatus : Normal Type : DataBoxGateway CloudReadRateBytesPerSec : 0 CloudWriteRateBytesPerSec : 0 IsInitialPasswordSet : True FriendlySoftwareVersionNumber : 1902 UploadPolicy : All DataDiskResiliencySettingName : Simple ApplianceTypeFriendlyName : Data Box Gateway IsRegistered : False
こちらの重要なデバイス情報のいくつかをまとめた表をご覧ください。
パラメーター 説明 FriendlyName ローカル Web UI でデバイスのデプロイ中に構成されるデバイスのフレンドリ名。 既定のフレンドリ名は、デバイスのシリアル番号です。 SerialNumber デバイスのシリアル番号は、出荷時に割り当てられる一意の数です。 モデル Azure Stack Edge または Data Box Gateway デバイスのモデルです。 モデルは、Azure Stack Edge の場合は物理で、Data Box Gateway の場合は仮想です。 FriendlySoftwareVersion デバイス ソフトウェアのバージョンに対応するフレンドリ文字列。 プレビューを実行しているシステムの場合、ソフトウェアのフレンドリ バージョンは Data Box Edge 1902 です。 HcsVersion デバイスで実行されている HCS ソフトウェアのバージョン。 たとえば、Data Box Edge 1902 に対応する HCS ソフトウェアのバージョンは 1.4.771.324 です。 LocalCapacityInMb デバイスの合計容量 (メガビット単位)。 IsRegistered この値は、デバイスがサービスでアクティブ化されるかどうかを示します。
デバイスをリセットする
デバイスをリセットするには、データ ディスクのすべてのデータおよびデバイスのブート ディスクを安全に消去する必要があります。
データ ディスクとブート ディスクの両方を消去する、またはデータ ディスクのみを消去するには、Reset-HcsAppliance
コマンドレットを使用します。 SecureWipeBootDisk
および SecureWipeDataDisks
スイッチによってブート ディスクとデータ ディスクとをそれぞれワイプできます。
SecureWipeBootDisk
スイッチによってブート ディスクがワイプされ、デバイスが使用できなくなります。 これは、デバイスを Microsoft に返す必要がある場合にのみ使用してください。 詳細については、Microsoft へのデバイスの返却に関する記事を参照してください。
ローカル Web UI でデバイス リセットを使用する場合、データ ディスクのみが安全に消去されますが、ブート ディスクはそのまま維持されます。 ブート ディスクはデバイス構成を含みます。
コマンド プロンプトに、次のコマンドを入力します。
Reset-HcsAppliance -SecureWipeBootDisk -SecureWipeDataDisks
次の例は、コマンドレットの使用方法を示しています。
[10.128.24.33]: PS>Reset-HcsAppliance -SecureWipeBootDisk -SecureWipeDataDisks Confirm Are you sure you want to perform this action? Performing the operation "Reset-HcsAppliance" on target "ShouldProcess appliance". [Y] Yes [A] Yes to All [N] No [L] No to All [?] Help (default is "Y"): N
コンピューティング ログを取得する
デバイスにコンピューティング ロールが構成されている場合は、PowerShell インターフェイス経由でコンピューティング ログを取得することもできます。
Get-AzureDataBoxEdgeComputeRoleLogs
を使用してデバイスのコンピューティング ログを取得します。このコマンドレットの使用例を次に示します。
Get-AzureDataBoxEdgeComputeRoleLogs -Path "\\hcsfs\logs\myacct" -Credential "username" -FullLogCollection
このコマンドレットで使用されるパラメーターの説明を次に示します。
Path
: コンピューティング ログ パッケージを作成する共有へのネットワーク パスを指定します。Credential
: ネットワーク共有のユーザー名を指定します。 このコマンドレットを実行するときには、共有のパスワードを指定する必要があります。FullLogCollection
: このパラメーターにより、ログ パッケージにすべてのコンピューティング ログが確実に含まれます。 既定では、ログ パッケージに含まれるものは、ログのサブセットのみです。
コンピューティング モジュールの監視とトラブルシューティングを行う
コンピューティング ロールが構成されている Azure Stack Edge デバイスでは、2 つの異なるコマンド セットを利用してデバイスをトラブルシューティングしたり、監視したりできます。
iotedge
コマンドの使用。 これらのコマンドはデバイスの基本操作に利用できます。dkrdbe
コマンドの使用。 これらのコマンドはデバイスのさまざまな操作に利用できます。
上記のコマンド セットのいずれかを実行するには、PowerShell インターフェイスに接続する必要があります。
iotedge
コマンドの使用
利用できるコマンドの一覧を表示するには、PowerShell インターフェイスに接続し、iotedge
関数を使用します。
[10.100.10.10]: PS>iotedge -? Usage: iotedge COMMAND
Commands:
check
list
logs
restart
[10.100.10.10]: PS>
次の表は、iotedge
で利用できるコマンドの説明を簡単にまとめたものです。
command | 説明 |
---|---|
check |
構成と接続に関する一般的な問題について自動チェックを実行する |
list |
モジュールの一覧を表示する |
logs |
モジュールのログを取得する |
restart |
モジュールの停止と再開 |
dkrdbe
コマンドの使用
利用できるコマンドの一覧を表示するには、PowerShell インターフェイスに接続し、dkrdbe
関数を使用します。
[10.100.10.10]: PS>dkrdbe -?
Usage: dkrdbe COMMAND
Commands:
image [prune]
images
inspect
login
logout
logs
port
ps
pull
start
stats
stop
system [df]
top
[10.100.10.10]: PS>
次の表は、dkrdbe
で利用できるコマンドの説明を簡単にまとめたものです。
command | 説明 |
---|---|
image |
イメージを管理する。 未使用のイメージを削除するには、以下を使用します: dkrdbe image prune -a -f |
images |
イメージの一覧表示 |
inspect |
Docker オブジェクトに関する詳細な情報を返す |
login |
Docker レジストリにサインインする |
logout |
Docker レジストリからサインアウトする |
logs |
コンテナーのログを取得する |
port |
ポート マッピングまたはコンテナーに対するある特定のマッピングを一覧表示する |
ps |
コンテナーをリストする |
pull |
レジストリからイメージまたはリポジトリをプルする |
start |
停止している 1 つまたは複数のコンテナーを開始する |
stats |
コンテナーのリソース使用統計のライブ ストリームを表示する |
stop |
実行中の 1 つまたは複数のコンテナーを停止する |
system |
Docker の管理 |
top |
コンテナーの実行中のプロセスを表示する |
利用可能なコマンドのヘルプを表示するには、dkrdbe <command-name> --help
を使用します。
たとえば、port
コマンドの使い方を知るには、次のように入力します。
[10.100.10.10]: P> dkrdbe port --help
Usage: dkr port CONTAINER [PRIVATE_PORT[/PROTO]]
List port mappings or a specific mapping for the container
[10.100.10.10]: P> dkrdbe login --help
Usage: docker login [OPTIONS] [SERVER]
Log in to a Docker registry.
If no server is specified, the default is defined by the daemon.
Options:
-p, --password string Password
--password-stdin Take the password from stdin
-u, --username string Username
[10.100.10.10]: PS>
dkrdbe
関数に利用できるコマンドでは、通常の Docker コマンドに使用されるものと同じパラメーターが使用されます。 Docker コマンドと共に使用されるオプションとパラメーターについては、Docker コマンドラインの使用に関するページを参照してください。
モジュールが正常にデプロイされているかどうかを確認するには
コンピューティング モジュールは、ビジネス ロジックが実装されたコンテナーです。 コンピューティング モジュールが正常にデプロイされているかどうかを確認するには、ps
コマンドを実行し、コンテナー (コンピューティング モジュールに対応) が実行されているかどうかを確認します。
(一時停止されているものも含め) すべてのコンテナーの一覧を表示するには、ps -a
コマンドを実行します。
[10.100.10.10]: P> dkrdbe ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d99e2f91d9a8 edgecompute.azurecr.io/filemovemodule2:0.0.1-amd64 "dotnet FileMoveModu…" 2 days ago Up 2 days movefile
0a06f6d605e9 edgecompute.azurecr.io/filemovemodule2:0.0.1-amd64 "dotnet FileMoveModu…" 2 days ago Up 2 days filemove
2f8a36e629db mcr.microsoft.com/azureiotedge-hub:1.0 "/bin/sh -c 'echo \"$…" 2 days ago Up 2 days 0.0.0.0:443->443/tcp, 0.0.0.0:5671->5671/tcp, 0.0.0.0:8883->8883/tcp edgeHub
acce59f70d60 mcr.microsoft.com/azureiotedge-agent:1.0 "/bin/sh -c 'echo \"$…" 2 days ago Up 2 days edgeAgent
[10.100.10.10]: PS>
コンテナー イメージの作成中またはイメージのプル中にエラーが発生した場合、logs edgeAgent
を実行します。 EdgeAgent
は、他のコンテナーのプロビジョニングを担う IoT Edge ランタイム コンテナーです。
logs edgeAgent
はすべてのログをダンプするため、最近のエラーを表示する方法としては、オプション --tail 20
の利用をお勧めします。
[10.100.10.10]: PS>dkrdbe logs edgeAgent --tail 20
2019-02-28 23:38:23.464 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Util.Uds.HttpUdsMessageHandler] - Connected socket /var/run/iotedge/mgmt.sock
2019-02-28 23:38:23.464 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Util.Uds.HttpUdsMessageHandler] - Sending request http://mgmt.sock/modules?api-version=2018-06-28
2019-02-28 23:38:23.464 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Agent.Core.Agent] - Getting edge agent config...
2019-02-28 23:38:23.464 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Agent.Core.Agent] - Obtained edge agent config
2019-02-28 23:38:23.469 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Agent.Edgelet.ModuleManagementHttpClient] - Received a valid Http response from unix:///var/run/iotedge/mgmt.soc
k for List modules
--------------------CUT---------------------
--------------------CUT---------------------
08:28.1007774+00:00","restartCount":0,"lastRestartTimeUtc":"2019-02-26T20:08:28.1007774+00:00","runtimeStatus":"running","version":"1.0","status":"running","restartPolicy":"always
","type":"docker","settings":{"image":"edgecompute.azurecr.io/filemovemodule2:0.0.1-amd64","imageHash":"sha256:47778be0602fb077d7bc2aaae9b0760fbfc7c058bf4df192f207ad6cbb96f7cc","c
reateOptions":"{\"HostConfig\":{\"Binds\":[\"/home/hcsshares/share4-dl460:/home/input\",\"/home/hcsshares/share4-iot:/home/output\"]}}"},"env":{}}
2019-02-28 23:38:28.480 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Agent.Core.Planners.HealthRestartPlanner] - HealthRestartPlanner created Plan, with 0 command(s).
コンテナー ログを取得するには
特定のコンテナーのログを取得するには、まず、コンテナーを一覧表示し、次に、関心があるコンテナーのログを取得します。
実行中のコンテナーの一覧を取得するには、
ps
コマンドを実行します。[10.100.10.10]: P> dkrdbe ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d99e2f91d9a8 edgecompute.azurecr.io/filemovemodule2:0.0.1-amd64 "dotnet FileMoveModu…" 2 days ago Up 2 days movefile 0a06f6d605e9 edgecompute.azurecr.io/filemovemodule2:0.0.1-amd64 "dotnet FileMoveModu…" 2 days ago Up 2 days filemove 2f8a36e629db mcr.microsoft.com/azureiotedge-hub:1.0 "/bin/sh -c 'echo \"$…" 2 days ago Up 2 days 0.0.0.0:443->443/tcp, 0.0.0.0:5671->5671/tcp, 0.0.0.0:8883->8883/tcp edgeHub acce59f70d60 mcr.microsoft.com/azureiotedge-agent:1.0 "/bin/sh -c 'echo \"$…" 2 days ago Up 2 days edgeAgent
ログが必要なコンテナーのコンテナー ID をメモします。
特定のコンテナーのログを取得するには、コンテナー ID を指定した上で
logs
コマンドを実行します。[10.100.10.10]: PS>dkrdbe logs d99e2f91d9a8 02/26/2019 18:21:45: Info: Opening module client connection. 02/26/2019 18:21:46: Info: Initializing with input: /home/input, output: /home/output. 02/26/2019 18:21:46: Info: IoT Hub module client initialized. 02/26/2019 18:22:24: Info: Received message: 1, SequenceNumber: 0 CorrelationId: , MessageId: 081886a07e694c4c8f245a80b96a252a Body: [{"ChangeType":"Created","ShareRelativeFilePath":"\\__Microsoft Data Box Edge__\\Upload\\Errors.xml","ShareName":"share4-dl460"}] 02/26/2019 18:22:24: Info: Moving input file: /home/input/__Microsoft Data Box Edge__/Upload/Errors.xml to /home/output/__Microsoft Data Box Edge__/Upload/Errors.xml 02/26/2019 18:22:24: Info: Processed event. 02/26/2019 18:23:38: Info: Received message: 2, SequenceNumber: 0 CorrelationId: , MessageId: 30714d005eb048e7a4e7e3c22048cf20 Body: [{"ChangeType":"Created","ShareRelativeFilePath":"\\f [10]","ShareName":"share4-dl460"}] 02/26/2019 18:23:38: Info: Moving input file: /home/input/f [10] to /home/output/f [10] 02/26/2019 18:23:38: Info: Processed event.
デバイスの使用状況統計を監視するには
デバイスのメモリ、CPU 使用率、IO を監視するには、stats
コマンドを使用します。
stats
コマンドを実行し、ライブ ストリームを無効にし、最初の結果のみをプルします。dkrdbe stats --no-stream
このコマンドレットの使用例を次に示します。
[10.100.10.10]: P> dkrdbe stats --no-stream CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS d99e2f91d9a8 movefile 0.0 24.4MiB / 62.89GiB 0.04% 751kB / 497kB 299kB / 0B 14 0a06f6d605e9 filemove 0.00% 24.11MiB / 62.89GiB 0.04% 679kB / 481kB 49.5MB / 0B 14 2f8a36e629db edgeHub 0.18% 173.8MiB / 62.89GiB 0.27% 4.58MB / 5.49MB 25.7MB / 2.19MB 241 acce59f70d60 edgeAgent 0.00% 35.55MiB / 62.89GiB 0.06% 2.23MB / 2.31MB 55.7MB / 332kB 14 [10.100.10.10]: PS>
リモート セッションを終了します。
リモート PowerShell セッションを終了するには、PowerShell ウィンドウを閉じます。
次のステップ
- Azure portal で Azure Stack Edge Pro FPGA をデプロイします。