Azure portal を使用した大規模な IoT Edge モジュールの展開
適用対象: IoT Edge 1.5 IoT Edge 1.4
重要
サポートされているリリースは、IoT Edge 1.5 LTS と IoT Edge 1.4 LTS です。 IoT Edge 1.4 LTS は、2024 年 11 月 12 日にサポートが終了します。 以前のリリースの場合は、「IoT Edge を更新する」を参照してください。
Azure portal で IoT Edge の自動展開を作成して、多数のデバイスの進行中のデプロイを一度に管理します。 Azure IoT Edge の自動展開は、Azure IoT Hub のデバイス管理機能の一部です。 デプロイは、複数のモジュールを複数のデバイスにデプロイし、モジュールの状態と正常性を追跡し、必要に応じて変更できる動的プロセスです。
詳細については、「1 台のデバイスまたは多数のデバイスを対象とした IoT Edge 自動展開について」を参照してください。
タグを使用したデバイスの識別
デプロイを作成する前に、影響を与えるデバイスを指定できる必要があります。 Azure IoT Edge では、デバイス ツイン内のタグを使用してデバイスを識別します。 各デバイスには、対象のソリューションにとって意味のある方法で定義した複数のタグを設定することができます。
たとえば、スマート ビルディングのキャンパスを管理する場合は、デバイスに場所、部屋の種類、および環境タグを追加することがあります。
"tags":{
"location":{
"building": "20",
"floor": "2"
},
"roomtype": "conference",
"environment": "prod"
}
デバイス ツインとタグの詳細については、「IoT Hub のデバイス ツインの理解と使用」を参照してください。
デプロイの作成
IoT Edge には、シナリオをカスタマイズするために使用できる 2 種類の自動デプロイが用意されています。 システム ランタイム モジュールと任意の追加のモジュールおよびルートが含まれている標準デプロイを作成できます。 各デバイスには 1 つのデプロイしか適用できません。 または、カスタム モジュールおよびルートのみが含まれている (システム ランタイムはなし) 多層デプロイを作成できます。 デバイスで、標準デプロイの上に多数の多層デプロイを結合できます。 2 種類の自動デプロイが連携して動作するようすの詳細については、「1 台のデバイスまたは多数のデバイスを対象とした IoT Edge 自動デプロイについて」を参照してください。
デプロイと多層デプロイを作成するための手順は似ています。 違いがある場合は、以降の手順で説明されています。
- Azure portal で、IoT Hub に移動します。
- 左側のウィンドウにあるメニューで、[デバイス管理] の下の [構成とデプロイ] を選択します。
- 上部のバーで、[追加]>[デプロイの追加] または [複数層デプロイの追加] を選択します。
デプロイを作成するには、5 つの手順があります。 次のセクションで、手順ごとに説明します。
Note
この記事の手順は、IoT Edge エージェントとハブの最新のスキーマ バージョンに合わせています。
1.0.9 以前のバージョンを実行しているデバイスにデプロイする場合は、ウィザードの [モジュール] ステップで [ランタイムの設定] を編集して、スキーマ バージョン 1.0 を使用できるようにしてください。
手順 1: 名前とラベル
- デプロイに一意の名前を付けます。名前は最大 128 文字の英小文字で指定します。 スペースや、無効な文字は使用しないでください。
& ^ [ ] { } \ | " < > /
- デプロイの追跡に役立つよう、キーと値のペアとしてラベルを追加できます。 たとえば、HostPlatform と Linux、Version と 3.0.1 などです。
- [次へ: モジュール] を選択して手順 2 に進みます。
手順 2: モジュール
デプロイには、最大 50 個のモジュールを追加できます。 モジュールを含まないデプロイを作成すると、ターゲット デバイスから現在のモジュールが削除されます。
デプロイでは、IoT Edge エージェント モジュールと IoT Edge ハブ モジュールの設定を管理できます。 これらの 2 つのランタイム モジュールを構成するには、[ランタイムの設定] を選択します。 多層デプロイでは、これらのランタイム モジュールは含まれていないため、構成できません。
モジュールとしてカスタム コードを追加する、または Azure のサービス モジュールを手動で追加するには、次の手順を実行します。
ページの [Container Registry の設定] セクションで、モジュール イメージを格納するプライベート コンテナー レジストリにアクセスするための資格情報を指定します。
ページの [IoT Edge モジュール] セクションで、[追加] を選択します。
ドロップダウン メニューから以下のいずれかの種類のモジュールを選択します。
- IoT Edge モジュール - モジュール名とコンテナー イメージの URI を指定します。 たとえば、サンプルの SimulatedTemperatureSensor モジュールのイメージ URI は
mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:1.0
です。 Microsoft IoT Edge モジュール イメージの一覧については、「Microsoft アーティファクト レジストリ」を参照してください。 - Azure Stream Analytics モジュール - Azure Stream Analytics ワークロードから生成されるモジュールです。
- IoT Edge モジュール - モジュール名とコンテナー イメージの URI を指定します。 たとえば、サンプルの SimulatedTemperatureSensor モジュールのイメージ URI は
必要に応じて、手順 2 と 3 を繰り返してモジュールをデプロイに追加します。
モジュールをデプロイに追加したら、その名前を選択して [IoT Edge モジュールの更新] ページを開くことができます。 このページでは、モジュール設定、環境変数、作成オプション、スタートアップ順序、モジュール ツインを編集できます。 Marketplace からモジュールを追加した場合は、これらのパラメーターの一部が既に入力されている可能性があります。 指定可能なモジュール設定の詳細については、モジュールの構成と管理に関するページを参照してください。
多層デプロイを作成している場合は、同じデバイスを対象とする他のデプロイに存在するモジュールを構成する可能性があります。 他のバージョンを上書きせずにモジュール ツインを更新するには、[モジュール ツインの設定] タブを開きます。モジュール ツインの必要なプロパティ内のサブセクションの一意の名前を持つ新しい [モジュール ツイン プロパティ] (properties.desired.settings
など) を作成します。 properties.desired
フィールド内だけでプロパティを定義した場合は、それによって、優先順位の低いすべてのデプロイで定義されたモジュールの必要なプロパティが上書きされます。
多層デプロイでのモジュール ツインの構成の詳細については、多層デプロイに関するページを参照してください。
デプロイのすべてのモジュールが構成されたら、[次へ: ルート] を選択して手順 3 に進みます。
手順 3: ルート
[ルート] タブで、モジュールと IoT Hub の間でメッセージが渡される方法を定義します。 メッセージは、名前と値のペアを使用して作成されます。
たとえば、名前が route、値が FROM /messages/* INTO $upstream のルートでは、あらゆるモジュールから出力されるあらゆるメッセージが取得されて、IoT ハブに送信されます。
priority パラメーターと time to live パラメーターは、ルート定義に含めることができる省略可能なパラメーターです。 priority パラメーターでは、メッセージが最初に処理されるルート、または最後に処理されるルートを選択できます。 優先度は 0 から 9 の数値で設定されます (最高優先度は 0)。 time to live パラメーターでは、メッセージが処理されるかキューから削除されるまで当該ルートに保持しておく期間を宣言できます。
ルートの作成方法の詳細については、「ルートの宣言」をご覧ください。
[次へ: ターゲット デバイス] を選択します。
手順 4: 対象デバイス
このデプロイの対象となるデバイスを、デバイスからのタグ プロパティを使用して指定します。
同じデバイスが複数のデプロイの対象となっている場合があるため、各デプロイに優先順位番号を付ける必要があります。 競合した場合は、最も優先度が高いデプロイが優先されます (値が大きい方が優先度が高いことを示します)。 2 つのデプロイの優先度が同じ場合は、作成された時期が最近のデプロイが優先されます。
複数のデプロイが同じデバイスをターゲットにしている場合は、優先順位の高いものだけが適用されます。 複数の多層デプロイが同じデバイスをターゲットにしている場合、それらはすべて適用されます。 ただし、いずれかのプロパティが複製されている場合 (同じ名前のルートが 2 つ存在する場合など) は、優先順位の高い多層デプロイのもので残りが上書きされます。
デバイスをターゲットにする多層デプロイが適用されるようにするには、そのデプロイの優先順位を基本デプロイより高くする必要があります。
- デプロイの[優先度] を正の整数で入力します。
- ターゲット条件を入力し、このデプロイのターゲットとなるデバイスを決定します。 条件は、デバイス ツイン タグか、デバイス ツインから報告されるプロパティに基づいて指定し、式の形式に一致させる必要があります。 たとえば、
tags.environment='test'
またはproperties.reported.devicemodel='4000x'
です。
[次へ: メトリック] を選択します。
手順 5: メトリック
メトリックは、構成のコンテンツを適用した結果としてデバイスから報告される、各種の状態の集計カウントを示すものです。
[メトリック名] に名前を入力します
[メトリックの条件] にクエリを入力します。 そのクエリは、IoT Edge ハブ モジュール ツインで報告されるプロパティに基づいています。 メトリックは、クエリによって返された行の数を表します。
次に例を示します。
SELECT deviceId FROM devices WHERE properties.reported.lastDesiredStatus.code = 200
[次へ: レビューと作成] を選択して最後の手順に進みます。
手順 6: 確認と作成
デプロイ情報を確認し、[作成] を選択します。
デプロイを監視するには、「IoT Edge デプロイの監視」を参照してください。
Note
新しい IoT Edge のデプロイが作成されると、IoT Hub が新しい構成を処理し、新しい必要なプロパティをターゲット デバイスに伝達するまでに最大 5 分かかる場合があります。
デプロイの変更
デプロイを変更すると、変更はすべての対象デバイスにただちにレプリケートされます。 既存のデプロイに対して次の設定および機能を変更できます。
- ターゲットの条件
- カスタム メトリック
- Labels
- タグ
- 必要なプロパティ
ターゲットの条件、カスタム メトリック、およびラベルを変更する
IoT ハブで、左側のウィンドウのメニューから [構成とデプロイ] を選択します。
構成するデプロイを選択します。
[ターゲット デバイス] タブを選択します。目的のデバイスをターゲットとするように [ターゲットの条件] を変更します。 [優先順位] を調整することもできます。
対象の条件を更新すると、次の更新が実行されます。
- デバイスが古い対象条件を満たさないが、新しい対象条件を満たしており、このデプロイのそのデバイスに対する優先度が最も高い場合は、このデプロイは、このデバイスに適用されます。
- このデプロイを現在実行しているデバイスが対象条件を満たさなくなった場合、このデプロイはアンインストールされ、次に優先度の高いデプロイが適用されます。
- このデプロイを現在実行しているデバイスが対象条件を満たさなくなり、他のデプロイの対象条件を満たさない場合は、デバイスではなにも変更されません。 デバイスは現在の状態で現在のモジュールを実行し続けますが、このデプロイの一部としては管理されなくなります。 デバイスが他のデプロイの対象の条件を満たすと、このデプロイはアンインストールされ、新しいデプロイが適用されます。
[メトリック] タブを選択し、[メトリックの編集] ボタンを選択します。 構文の例をガイドとして使用して、カスタム メトリックを追加または変更します。 [保存] を選択します。
[ラベル] タブを選択して必要な変更を行い、[保存] を選択します。
デプロイの削除
デプロイを削除すると、デプロイされたデバイスは、次に優先順位の高いデプロイを受け入れます。 デバイスが他のいずれのデプロイの対象条件も満たさない場合、デプロイが削除されても、モジュールは削除されません。
- Azure portal にサインインし、IoT Hub に移動します。
- [構成と展開] を選択します。
- チェックボックスを使用して、削除するデプロイを選択します。
- [削除] を選択します。
- この操作によりこのデプロイが削除され、すべてのデバイスが以前の状態に戻されることを警告するプロンプトが表示されます。 優先度の低いデプロイが適用されます。 対象となっているデプロイがない場合は、モジュールは削除されません。 デバイスからすべてのモジュールを削除するには、モジュールがまったく指定されてないデプロイを作成し、それを同じデバイスにデプロイします。 はいを選択して続行します。
次のステップ
IoT Edge デバイスへのモジュールのデプロイの詳細について学習します。