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 クライアントからリモートで接続するには、次の手順に従います。

  1. Windows PowerShell セッションを管理者として実行します。

  2. Windows リモート管理サービスがクライアントで実行されていることを確認します。 コマンド プロンプトに、次のコマンドを入力します。

    winrm quickconfig

    詳細については、「Windows リモート管理のためのインストールと構成」をご覧ください。

  3. デバイスの IP アドレスに変数を割り当てます。

    $ip = "<device_ip>"

    <device_ip> を デバイスの IP アドレスに置き換えます。

  4. デバイスの IP アドレスをクライアントの信頼されたホスト一覧に追加するために、次のコマンドを入力します。

    Set-Item WSMan:\localhost\Client\TrustedHosts $ip -Concatenate -Force

  5. デバイスの Windows PowerShell セッションを開始します。

    Enter-PSSession -ComputerName $ip -Credential $ip\EdgeUser -ConfigurationName Minishell

  6. パスワードの入力を求められたら、入力します。 ローカル 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 経由の PowerShell リモート処理」を参照してください。

NFS クライアントからリモートで接続するには、次の手順に従います。

  1. PowerShell セッションを開くために、次のように入力します。

    pwsh

  2. リモート クライアントを使用して接続するために、次のように入力します。

    Enter-PSSession -ComputerName $ip -Authentication Negotiate -ConfigurationName Minishell -Credential ~\EdgeUser

    入力を求められたら、デバイスへのサインインに使用するパスワードを指定します。

Note

この手順は Mac OS では機能しません。

サポート パッケージを作成する

デバイスの問題が発生した場合は、システム ログからサポート パッケージを作成できます。 Microsoft サポートでは、このパッケージを使用して問題のトラブルシューティングを行います。 サポート パッケージを作成するには、次の手順に従います。

  1. デバイスの PowerShell インターフェイスに接続します

  2. 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 証明書をアップロードすることができます。

  1. PowerShell インターフェイスに接続する

  2. 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 証明書に関するページまたは「ゲートウェイに証明書をインストール」に移動してください。

デバイス情報を表示する

  1. PowerShell インターフェイスに接続する

  2. 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 でデバイス リセットを使用する場合、データ ディスクのみが安全に消去されますが、ブート ディスクはそのまま維持されます。 ブート ディスクはデバイス構成を含みます。

  1. PowerShell インターフェイスに接続する

  2. コマンド プロンプトに、次のコマンドを入力します。

    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 インターフェイス経由でコンピューティング ログを取得することもできます。

  1. PowerShell インターフェイスに接続する

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

コンテナー ログを取得するには

特定のコンテナーのログを取得するには、まず、コンテナーを一覧表示し、次に、関心があるコンテナーのログを取得します。

  1. PowerShell インターフェイスに接続する

  2. 実行中のコンテナーの一覧を取得するには、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
    
  3. ログが必要なコンテナーのコンテナー ID をメモします。

  4. 特定のコンテナーのログを取得するには、コンテナー 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 コマンドを使用します。

  1. PowerShell インターフェイスに接続する

  2. 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 ウィンドウを閉じます。

次のステップ