次の方法で共有


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

適用対象:IoT Edge 1.5 のチェックマーク IoT Edge 1.5

重要

IoT Edge 1.5 LTS は、サポートされているリリースです。 IoT Edge 1.4 LTS は、2024 年 11 月 12 日をもってサポートが終了しています。 以前のリリースの場合は、「IoT Edge を更新する」を参照してください。

この記事では、対称キーを使用して 1 つ以上の IoT Edge for Linux on Windows デバイスを自動プロビジョニングする方法を示します。 Azure IoT Hub デバイス プロビジョニング サービス (DPS) を使用して Azure IoT Edge デバイスを 自動的にプロビジョニングします。 自動プロビジョニングの処理に慣れていない場合は、プロビジョニングの概要を確認してから先に進んでください。

タスクを次に示します。

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

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

前提条件

クラウド リソース

デバイスの要件

以下の最小要件を備えた 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 デバイスにデプロイする前に、仮想スイッチを作成する必要があります。 詳細については、 Azure IoT Edge for Linux on Windows 仮想スイッチの作成に関するページを参照してください。
    • デスクトップ バージョンの Windows には、EFLOW のインストールに使用できる既定のスイッチが付属しています。 必要な場合は、独自のカスタム仮想スイッチを作成できます。

ヒント

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

GPU アーキテクチャに応じて適切なドライバーをインストールする必要があり、Windows Insider Program ビルドへのアクセスが必要になる場合があります。 構成上の必要性を特定し、それらの前提条件を満たすには、「Azure IoT Edge for Linux on Windows 用の GPU アクセラレーション」を参照してください。

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

開発者ツール

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 つ以上のデバイスをプロビジョニングする登録を作成します。

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

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

デバイス プロビジョニング サービスでの登録の詳細については、デバイス登録の管理方法に関するページをご覧ください。

DPS 個別登録を作成する

ヒント

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

  1. Azure portal で、IoT Hub Device Provisioning Service のインスタンスに移動します。

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

  3. [Add individual enrollment]\(個別登録の追加\) を選択し、登録を構成する次の手順を完了します。

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

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

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

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

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

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

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

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

IoT Edge をインストールする

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

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

  1. 管理者特権の PowerShell セッションで、ターゲット デバイス アーキテクチャに応じて次のいずれかのコマンドを実行し、IoT Edge for Linux on Windows をダウンロードします。

    • X64、AMD64

      $msiPath = $([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))
      $ProgressPreference = 'SilentlyContinue'
      Invoke-WebRequest "https://aka.ms/AzEFLOWMSI_1_5_LTS_X64" -OutFile $msiPath
      
    • ARM64

      $msiPath = $([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))
      $ProgressPreference = 'SilentlyContinue'
      Invoke-WebRequest "https://aka.ms/AzEFLOWMSI_1_5_LTS_ARM64" -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 コマンドのオプションでパラメーターを指定することで、仮想マシンで使用できるリソースをカスタマイズできます。 これは、最小ハードウェア要件を持つデバイスに EFLOW をデプロイするために必要です。

    たとえば、次のコマンドは、1 つの vCPU コア、1 GB の RAM (MB で表現)、および 2 GB のディスク領域を持つ仮想マシンを作成します。

    Deploy-Eflow -cpuCount 1 -memoryInMB 1024 -vmDataSize 2
    

    使用できるすべてのオプション パラメーターについては、「IoT Edge for Linux on Windows 用の PowerShell 関数」を参照してください。

    警告

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

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

    GPU パススルーを使用するには、 コマンドに gpuNamegpuPassthroughTypeDeploy-Eflow の各パラメーターを追加します。 使用できるすべてのオプション パラメーターについては、「IoT Edge for Linux on Windows 用の PowerShell 関数」を参照してください。

    警告

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

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

  6. 必要に応じて、「O」または「R」を入力して [Optional diagnostic data](オプションの診断データ) をオンまたはオフに切り替えます。

  7. デプロイが完了すると、PowerShell ウィンドウに、「デプロイが成功しました」と表示されます。

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

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

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

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

次の情報があることを確認します。

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

プレースホルダーの値を実際の値で更新して、昇格された 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 で Device Provisioning Service インスタンスに移動します。 作成した個別登録の詳細を開きます。 登録の状態が 割り当てられ、デバイス 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 iotedge system logs
      
    2. check ツールを使用して、デバイスの構成と接続の状態を確認します。

      sudo iotedge check
      

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

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

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

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

新しい 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] アプリを選択します
  4. [アンインストール] を選択します

次のステップ

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

さらに、以下を実行できます。