次の方法で共有


対称キーを使用して IoT Edge for Linux on Windows デバイスを大規模に作成してプロビジョニングする

適用対象:はいアイコン IoT Edge 1.1

重要

IoT Edge 1.1 のサポート終了日は、2022 年 12 月 13 日でした。 この製品、サービス、テクノロジ、または API がどのようにサポートされているかについては、 Microsoft 製品ライフサイクル を確認してください。 最新バージョンの IoT Edge への更新の詳細については、「 IoT Edge の更新」を参照してください。

この記事では、対称キーを使用して Windows デバイス上の 1 つ以上の IoT Edge for Linux を 自動プロビジョニングするためのエンド ツー エンドの手順について説明します。 Azure IoT Hub デバイス プロビジョニング サービス (DPS) を使用して 、Azure IoT Edge デバイスを 自動的にプロビジョニングできます。 自動プロビジョニングのプロセスに慣れていない場合は、続行する前にプロビジョニングの 概要を 確認してください。

タスクは次のとおりです。

  1. 1 つのデバイスに対して 個別 登録を作成するか、一連のデバイスの グループ登録 を作成します。
  2. IoT Edge ランタイムがインストールされた Linux 仮想マシンをデプロイし、それを IoT Hub に接続する。

対称キーの構成証明は、デバイス プロビジョニング サービス インスタンスを使用してデバイスを認証する簡単なアプローチです。 この構成証明の方法では、初めてデバイスのプロビジョニングを行う開発者または厳密なセキュリティ要件がない開発者に対して、"Hello world" エクスペリエンスを提示します。 TPM または X.509 証明書を使用したデバイス構成証明の安全性が高く、より厳格なセキュリティ要件に使用する必要があります。

前提条件

クラウド リソース

  • アクティブな IoT ハブ
  • 自分の IoT ハブにリンクされた、Azure 内の IoT Hub デバイス プロビジョニング サービスのインスタンス

デバイスの要件

以下の最小要件を備えた Windows デバイス:

  • システム要件

    • Windows 101/11 (Pro、Enterprise、IoT Enterprise)
    • Windows Server 20191/2022
      1 Windows 10 および Windows Server 2019 の最小ビルド 17763。現在の累積的な更新プログラムがすべてインストールされています。
  • ハードウェア要件

    • 最小空きメモリ容量: 1 GB
    • 最小空きディスク領域:10 GB
  • 仮想化サポート

  • ネットワークのサポート

    • Windows Server には既定のスイッチは付属していません。 EFLOW を Windows Server デバイスにデプロイする前に、仮想スイッチを作成する必要があります。 詳細については、「 Windows で Linux 用の仮想スイッチを作成する」を参照してください。
    • デスクトップ バージョンの Windows には、EFLOW のインストールに使用できる既定のスイッチが付属しています。 必要な場合は、独自のカスタム仮想スイッチを作成できます。

ヒント

Azure IoT Edge for Linux on Windows デプロイで GPU アクセラレーション Linux モジュール を使用する場合は、いくつかの構成オプションを考慮する必要があります。

お使いの GPU のアーキテクチャに応じて適切なドライバーをインストールする必要があり、Windows Insider Program ビルドを入手することが必要な場合があります。 構成のニーズを判断し、これらの前提条件を満たすには、 Windows 上の Azure IoT Edge for Linux の GPU アクセラレーションに関するページを参照してください。

時間をとって、現時点で GPU アクセラレータの前提条件を満たしていることをご確認ください。 インストール中に GPU アクセラレーションを使用する場合は、インストール プロセスを再起動する必要があります。

開発者用ツール

PowerShell または Windows Admin Center を使用して、IoT Edge デバイスを管理できます。 各ユーティリティには、独自の前提条件があります。

PowerShell を使用する場合は、次の手順に従って、Azure IoT Edge for Linux on Windows のインストールと Linux 仮想マシンのデプロイ用にターゲット デバイスを準備します。

  1. ターゲット デバイスの実行ポリシーを AllSigned に設定します。 現在の実行ポリシーは、管理者特権の PowerShell プロンプトで次のコマンドを使用して確認できます。

    Get-ExecutionPolicy -List
    

    local machine の実行ポリシーが AllSigned になっていない場合は、次のようにして実行ポリシーを設定できます。

    Set-ExecutionPolicy -ExecutionPolicy AllSigned -Force
    

Azure IoT Edge for Linux on Windows PowerShell モジュールの詳細については、 PowerShell 関数リファレンスを参照してください

DPS の登録を作成する

DPS を介して 1 つ以上のデバイスをプロビジョニングする登録を作成します。

1 つの IoT Edge デバイスをプロビジョニングする場合は、 個別の登録を作成します。 複数のデバイスをプロビジョニングする必要がある場合は、DPS グループ登録を作成する手順に従います。

DPSに登録する際、デバイス ツインの初期状態を指定できます。 デバイス ツインでは、ソリューションで必要な任意のメトリック (リージョン、環境、場所、デバイスの種類など) によってデバイスをグループ化するためのタグを設定できます。 これらのタグは、 自動デプロイを作成するために使用されます。

デバイス プロビジョニング サービスの登録の詳細については、「デバイスの 登録を管理する方法」を参照してください。

DPS 個別登録を作成する

ヒント

この記事の手順は Azure portal 向けですが、Azure CLI を使用して個別登録を作成することもできます。 詳細については、 az iot dps の登録に関するページを参照してください。 CLI コマンドの一部として、 エッジ対応 フラグを使用して、登録が IoT Edge デバイス用であることを指定します。

  1. Azure portal で、IoT Hub デバイス プロビジョニング サービスのインスタンスに移動します。

  2. [ 設定] で、[ 登録の管理] を選択します。

  3. [ 個々の登録の追加] を選択し、次の手順を実行して登録を構成します。

    1. [ メカニズム] で、[ 対称キー] を選択します。

    2. デバイスの一意の 登録 ID を 指定します。

    3. 必要に応じて、 デバイスの IoT Hub デバイス ID を 指定します。 デバイス ID を使用して、個々のデバイスをモジュール展開のターゲットにすることができます。 デバイス ID を指定しなかった場合は、登録 ID が使用されます。

    4. 登録が IoT Edge デバイス用であることを宣言するには 、[True] を 選択します。

    5. 必要に応じて、 初期デバイス ツイン状態にタグ値を追加します。 タグを使用して、デバイス グループをモジュール展開のターゲットにすることができます。 例えば次が挙げられます。

      {
         "tags": {
            "environment": "test"
         },
         "properties": {
            "desired": {}
         }
      }
      
    6. [保存] を選択します

  4. IoT Edge ランタイムをインストールするときに使用する個々の登録の 主キー の値をコピーします。

これで、このデバイスの登録が存在しているので、IoT Edge ランタイムによってインストール時にデバイスを自動的にプロビジョニングできます。

IoT Edge をインストールする

ターゲット デバイスに Azure IoT Edge for Linux on Windows をデプロイします。

ターゲット デバイスに Windows に IoT Edge for Linux をインストールします。

下記の PowerShell の手順では、IoT Edge for Linux on Windows をローカル デバイスにデプロイする方法の概要を示しています。 PowerShell を使用してリモート ターゲット デバイスに展開するには、 リモート PowerShell を使用してリモート デバイスへの接続を確立し、そのデバイスでこれらのコマンドをリモートで実行できます。

  1. 管理者特権の PowerShell セッションで、次の各コマンドを実行し、IoT Edge for Linux on Windows をダウンロードします。

    $msiPath = $([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))
    $ProgressPreference = 'SilentlyContinue'
    Invoke-WebRequest "https://aka.ms/AzEflowMSI" -OutFile $msiPath
    
  2. IoT Edge for Linux on Windows をデバイスにインストールします。

    Start-Process -Wait msiexec -ArgumentList "/i","$([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))","/qn"
    

    インストール コマンドに INSTALLDIR="<FULLY_QUALIFIED_PATH>" パラメーターと VHDXDIR="<FULLY_QUALIFIED_PATH>" パラメーターを追加することで、IoT Edge for Linux on Windows のカスタム インストールと VHDX ディレクトリを指定できます。 たとえば、 インストールに D:\EFLOW フォルダーを使用し、 VHDX に D:\EFLOW-VHDX を使用する場合は、次の PowerShell コマンドレットを使用できます。

    Start-Process -Wait msiexec -ArgumentList "/i","$([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))","/qn","INSTALLDIR=D:\EFLOW", "VHDXDIR=D:\EFLOW-VHDX"
    
  3. ターゲット デバイスの実行ポリシーがまだ AllSigned に設定されていない場合、これを設定します。 最新の実行ポリシーをチェックしたり実行ポリシーを AllSigned に設定したりするためのコマンドについては、PowerShell の前提条件を参照してください。

  4. IoT Edge for Linux on Windows のデプロイを設定します。 このデプロイによって Linux 仮想マシンが作成され、IoT Edge ランタイムが自動的にインストールされます。

    Deploy-Eflow
    

    ヒント

    既定では Deploy-Eflow コマンドを実行すると、1 GB の RAM、1 つの仮想 CPU コア、16 GB のディスク領域を持つ Linux 仮想マシンを作成します。 ですが、VM に必要なリソースは、デプロイするワークロードに大きく左右されます。 ワークロードを処理するのに十分なメモリがなければ、VM は起動に失敗します。

    Deploy-Eflow コマンドのオプションでパラメーターを指定することで、仮想マシンで使用できるリソースをカスタマイズできます。

    たとえば、次のコマンドでは、4 つの vCPU コア、4 GB の RAM (MB 単位)、20 GB のディスク領域を持つ仮想マシンが作成されます。

    Deploy-Eflow -cpuCount 4 -memoryInMB 4096 -vmDiskSize 20
    

    使用可能なすべての省略可能なパラメーターについては、 Windows 上の IoT Edge for Linux 用 PowerShell 関数に関する記事を参照してください。

    警告

    既定では、EFLOW の Linux 仮想マシンには DNS 構成がありません。 DHCP を使用したデプロイでは、DHCP サーバーによって伝達された DNS 構成の取得が試みられます。 DNS の構成を確認して、インターネット接続を確保してください。 詳細については、「 AzEFLOW-DNS」を参照してください。

    GPU をデプロイに割り当てて、GPU アクセラレーション対応の Linux モジュールを有効にできます。 これらの機能にアクセスするには、 Windows 上の Azure IoT Edge for Linux の GPU アクセラレーションに関する詳細な前提条件をインストールする必要があります。

    GPU パススルーを使用するには、 gpuNamegpuPassthroughTypeおよび gpuCount パラメーターを Deploy-Eflow コマンドに追加します。 使用可能なすべての省略可能なパラメーターについては、 Windows 上の IoT Edge for Linux 用 PowerShell 関数に関する記事を参照してください。

    警告

    ハードウェア デバイスのパススルーを有効にすると、セキュリティ リスクが高まる可能性があります。 該当する場合は、GPU ベンダーが提供する、デバイスのリスク軽減ドライバーをお勧めします。 詳細については、「 個別のデバイス割り当てを使用してグラフィックス デバイスを展開する」を参照してください。

  5. ライセンス条項に同意するには、「Y」と入力します。

  6. 設定に応じて、オプションの 診断データ のオンとオフを切り替えるには、「O」または「R」と入力します。

  7. デプロイが完了すると、PowerShell ウィンドウで デプロイが成功したと報告されます。

    デプロイが成功すると、メッセージの最後に

    デプロイが正常に完了したら、デバイスをプロビジョニングする準備が整いました。

クラウド ID を使用してデバイスをプロビジョニングする

ランタイムがデバイスにインストールされたら、デバイス プロビジョニング サービスと IoT Hub に接続するための情報を使用してデバイスを構成します。

次の情報を用意しておきます。

  • DPS ID スコープ の値
  • あなたが作成したデバイスの登録ID
  • 個々の登録の 主キー 、またはグループ登録を使用するデバイスの 派生キー

PowerShell または Windows Admin Center を使用して、IoT Edge デバイスをプロビジョニングできます。

PowerShell の場合は、プレースホルダーの値を独自の値で更新して、次のコマンドを実行します。

Provision-EflowVm -provisioningType DpsSymmetricKey -​scopeId PASTE_YOUR_ID_SCOPE_HERE -registrationId PASTE_YOUR_REGISTRATION_ID_HERE -symmKey PASTE_YOUR_PRIMARY_KEY_OR_DERIVED_KEY_HERE

インストールの成功を確認する

IoT Edge for Linux on Windows が IoT Edge デバイスに正常にインストールされ、構成されたことを確認します。

デバイス プロビジョニング サービスで作成した個々の登録が使用されたことを確認できます。 Azure portal でデバイス プロビジョニング サービス インスタンスに移動します。 作成した個々の登録の詳細を開きます。 登録の状態が 割り当てられ 、デバイス ID が一覧表示されていることに注意してください。

  1. PowerShell セッションで次のコマンドを使用して、お使いの IoT Edge for Linux on Windows 仮想マシンにログインします。

    Connect-EflowVm
    

    仮想マシンへの SSH 接続が許可されるアカウントは、それを作成したユーザーだけです。

  2. ログインすると、次の Linux コマンドを使用して、実行中の IoT Edge モジュールの一覧を確認できます。

    sudo iotedge list
    
  3. IoT Edge サービスのトラブルシューティングを行う必要がある場合は、次の Linux コマンドを使用します。

    1. サービスのログを取得します。

      sudo journalctl -u iotedge
      
    2. check ツールを使用して、デバイスの構成と接続の状態を確認します。

      sudo iotedge check
      

    新しくプロビジョニングされたデバイスでは、IoT Edge ハブに関連するエラーが表示される場合があります。

    ×運用環境の準備: Edge Hub のストレージ ディレクトリがホスト ファイル システムに保持される - エラー

    edgeHub コンテナーの現在の状態を確認できませんでした

    このエラーは、IoT Edge ハブ モジュールが実行されていないために、新しくプロビジョニングされたデバイスで発生します。 このエラーを解決するには、IoT Hub でデバイスのモジュールを設定し、デプロイを作成します。 デバイスのデプロイを作成することで、IoT Edge ハブ モジュールを含むモジュールがデバイス上で開始されます。

新しい IoT Edge デバイスを作成すると、Azure portal で状態コード 417 -- The device's deployment configuration is not set が表示されます。 この状態は正常であり、デバイスでモジュールのデプロイを受け取る準備ができていることを意味します。

IoT Edge for Linux on Windows をアンインストールする

デバイスから Azure IoT Edge for Linux on Windows のインストールを削除する場合は、次のコマンドを使用します。

  1. Windows で [設定] を開きます
  2. [プログラムの追加と削除] を選択します
  3. Azure IoT Edge LTS アプリを選択する
  4. [アンインストール] を選択します

次のステップ

デバイス プロビジョニング サービスの登録プロセスでは、新しいデバイスをプロビジョニングするときに、デバイス ID とデバイス ツイン タグを同時に設定できます。 これらの値を使用して、個々のデバイスやデバイス グループを、自動デバイス管理によりターゲットできます。 Azure portal または Azure CLI使用して、大規模な IoT Edge モジュールをデプロイして監視する方法について説明します。

次のこともできます。