Azure Device Update for IoT Hub エージェントをプロビジョニングする
Device Update モジュール エージェントは、他のシステム プロセスや、同じ論理デバイスの一部として IoT ハブに接続されている IoT Edge モジュールと平行して実行できます。 この記事では、Device Update エージェントをモジュール ID としてプロビジョニングする方法について説明します。
Note
Device Update エージェントを使用する場合は、バージョン 1.0.0 の一般提供 (GA) バージョンであることを必ず確認してください。 インストールされている Device Update エージェントおよび配信の最適化エージェントのバージョンは、IoT デバイス ツインの [プロパティ] セクションで確認できます。 詳細については、デバイスとグループを最新の Device Update リリースに移行に関する記事を参照してください。
モジュール ID とデバイス ID
各 Azure IoT Hub デバイス ID の下に、最大で 50 個のモジュール ID を作成できます。 モジュール ID ごとに、モジュール ID ツインは暗黙的に生成されます。 デバイス側では、IoT Hub デバイス SDK を使用することで、IoT Hub への独立した接続を個別に確立するモジュールを作成できます。
モジュール ID とモジュール ID ツインにより、デバイス ID およびデバイス ツインと同様の機能が、より細かい粒度で提供されます。 詳細については、「IoT Hub のモジュール ツインの理解と使用」を参照してください。
Device Update エージェントをモジュール ID としてプロビジョニングする場合は、デバイスと Device Update サービス間のすべての通信がモジュール ツインを介して行われる必要があります。 デバイス グループを作成する際は必ず、デバイスのモジュール ツインにタグを付けてください。 デバイス レベルのエージェントから、エージェントをモジュール ID として追加する方法に移行する場合は、デバイス ツインを介して通信していた古いエージェントを削除します。
サポートされている更新プログラムの種類
Device Update では、次の種類の無線 IoT デバイスの更新をサポートしています。
- IoT Edge および IoT Edge 以外の Linux デバイス:
- Eclipse ThreadX Device Update エージェント
- ゲートウェイの背後にある切断されたデバイス
パッケージの更新の準備
パッケージ ベースの更新プログラムをインストールするように IoT デバイスまたは IoT Edge デバイスを設定する場合は、次の手順に従って packages.microsoft.com
をご利用のコンピューターのリポジトリに追加します。
Device Update エージェントをインストールするコンピューターまたは IoT デバイス上でターミナル ウィンドウを開きます。
ご利用のデバイスのオペレーティング システムと一致するリポジトリ構成をインストールします。次に例を示します。
curl https://packages.microsoft.com/config/ubuntu/18.04/multiarch/prod.list > ./microsoft-prod.list
生成されたリストを sources.list.d ディレクトリにコピーします。
sudo cp ./microsoft-prod.list /etc/apt/sources.list.d/
Microsoft GPG 公開キーをインストールします。
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
sudo cp ./microsoft.gpg /etc/apt/trusted.gpg.d/
Device Update エージェントをプロビジョニングする
IoT Edge 対応デバイス上でも IoT Edge 以外の IoT デバイス上でも、Device Update エージェントをモジュール ID としてプロビジョニングすることができます。 デバイス上で IoT Edge が有効になっているかどうかを確認するには、「登録済みデバイスを表示し、プロビジョニング情報を取得する」を参照してください。
[リリース] ページの [資産] セクションから、使用するサンプル イメージをダウンロードできます。 Tutorial_RaspberryPi3.zip では、swUpdate ファイルが Raspberry Pi B3+ ボードにフラッシュできる基本イメージとなります。 .gz ファイルは、Device Update を通じてインポートできる更新プログラムです。 詳細については、Raspberry Pi イメージを使用した Azure Device Update for IoT Hub に関するページを参照してください。
IoT Edge 対応デバイスの場合
IoT Edge 対応デバイス上で Device Update エージェントをプロビジョニングするには、次の手順に従います。
1 つの Linux IoT Edge デバイスを手動でプロビジョニングに関するページにある指示に従います。
次のコマンドを実行して、Device Update イメージ更新エージェントをインストールします。
sudo apt-get install deviceupdate-agent
デバイス更新のパッケージの更新エージェントをインストールします。
packages.microsoft.com からの最新のエージェントのバージョンの場合: 次を使用して、デバイス上のパッケージ リストを更新し、Device Update エージェント パッケージとその依存関係をインストールします。
sudo apt-get update
sudo apt-get install deviceupdate-agent
リリース候補 (RC) のエージェントのバージョンの場合: [リリース] から、Device Update エージェントをインストールするコンピューターに .deb ファイルをダウンロードして、次のコマンドを実行します。
sudo apt-get install -y ./"<PATH TO FILE>"/"<.DEB FILE NAME>"
切断されたデバイス シナリオ用に Microsoft 接続キャッシュ (MCC) を設定する場合は、次のように、配信の最適化 APT プラグインをインストールします。
sudo apt-get install deliveryoptimization-plugin-apt
IoT Edge 対応ではないデバイスの場合
IoT Edge がインストールされていない Linux IoT デバイス上で Device Update エージェントをプロビジョニングするには、次の手順に従います。
「Azure IoT Identity Service のインストール」にある手順に従って、IoT Identity Service の最新バージョンをインストールします。
「Azure IoT Identity Service の構成」の手順に従って、IoT Identity Service を構成します。
次のコマンドを実行して、Device Update エージェントをインストールします。
sudo apt-get install deviceupdate-agent
Note
IoT Identity Service または、IoT Identity Service がバンドルされている IoT Edge を、ご利用の IoT デバイスで実行できない場合でも、Device Update エージェントをインストールし、接続文字列を使用してその構成を行うことができます。
Device Update エージェントを構成する
Device Update エージェントをインストールしたら、次のコマンドを実行して Device Update 構成ファイルを編集します。
sudo nano /etc/adu/du-config.json
du-config.json ファイルに、Place value here
プレースホルダーを含んだすべての値を設定します。 プロビジョニングに IoT Identity Service を使用するエージェントの場合は、connectionType
を AIS
に変更し、ConnectionData
フィールドを空の文字列に設定します。 例については、「"du-config.json" ファイル コンテンツの例」を参照してください。
接続文字列を使用する
テスト用または制約のあるデバイスの場合、IoT ID サービスを使用せずに、Device Update エージェントを構成できます。 接続文字列を使用すれば、モジュールまたはデバイスから Device Update エージェントをプロビジョニングできます。
Azure portal で、プライマリ接続文字列をコピーします。 Device Update エージェントがモジュール ID として構成されている場合は、モジュールのプライマリ接続文字列をコピーします。 それ以外の場合は、デバイスのプライマリ接続文字列をコピーします。
Device Update エージェントをインストールしたコンピューターまたは IoT デバイスのターミナル ウィンドウで、次のコマンドを実行して、Device Update 構成ファイルを編集します。
- Ubuntu エージェントの場合:
sudo nano /etc/adu/du-config.json
。 - Yocto 参照イメージの場合:
sudo nano /adu/du-config.json
。
- Ubuntu エージェントの場合:
du-config.json ファイルに、
Place value here
プレースホルダーを含んでいるすべての値を設定し、コピーしたプライマリ接続文字列をconnectionData
フィールドの値として入力します。 例については、「"du-config.json" ファイル コンテンツの例」を参照してください。
Device Update エージェントを起動する
Device Update エージェントを起動し、ご利用のデバイス上で正常に実行されていることを確認します。
Device Update エージェントをインストールしたコンピューターまたは IoT デバイスのターミナル ウィンドウで、次のコマンドを実行してエージェントを再起動します。
sudo systemctl restart deviceupdate-agent
次のコマンドを実行して、エージェントの状態を確認します。
sudo systemctl status deviceupdate-agent
状態
OK
が表示されます。IoT Hub ポータル ページで、[デバイス] または [IoT Edge] に移動して、構成したデバイスを見つけ、Device Update エージェントがモジュールとして実行されていることを確認します。 次に例を示します。
プロキシ サーバーの背後でデバイス更新エージェントを有効化する
デバイス更新エージェントを実行するデバイスでは、HTTPS 要求を送信して IoT Hub と通信します。 お使いのデバイスをプロキシ サーバーを使うネットワークに接続した場合、デバイス更新 systemd サービスを構成してサーバー経由で通信する必要があります。
デバイスの更新を構成する前に、プロキシ URL を確認します。 プロキシ URL の形式は、protocol://proxy_host:proxy_port です。
次のコマンドを実行して、デバイス更新プログラムの構成に移動します。
sudo systemctl edit deviceupdate-agent.service
プロキシの詳細を構成に追加する
[Service]
Environment="https_proxy=<Proxy URL>"
エージェントを再起動して変更を適用します。
sudo systemctl daemon-reload
sudo systemctl restart deviceupdate-agent
sudo systemctl status deviceupdate-agent
Device Update エージェントをビルドして実行する
独自のカスタム Device Update エージェントをビルドして変更することもできます。 「Device Update エージェントのビルド方法」にある手順に従って、ソースから Device Update エージェントをビルドします。
エージェントが正常にビルドされたら、「Device Update for IoT Hub 参照エージェントの実行方法」に従ってエージェントを実行します。 エージェントをイメージに組み込むために必要な変更を行うには、「Device Update エージェント コードを変更する方法」に従います。
トラブルシューティング
問題が発生した場合は、「Device Update for IoT Hub のトラブルシューティング ガイド」をご覧ください。問題を解決し、Microsoft に提供する必要がある情報を収集するのに役に立ちます。
関連するコンテンツ
- Device Update for IoT Hub のトラブルシューティング ガイド
- Raspberry Pi イメージを使用した Azure Device Update for IoT Hub
- Ubuntu パッケージ エージェントを使用した Azure Device Update for IoT Hub
- チュートリアル: Device Update for Azure IoT Hub を使用してプロキシの更新を完了する
- シミュレーター エージェントを使用した Azure Device Update for IoT Hub
- Eclipse ThreadX を使用した Device Update for Azure IoT Hub