Device Update モジュール エージェントは、他のシステム プロセスや、同じ論理デバイスの一部として IoT ハブに接続されている IoT Edge モジュールと平行して実行できます。 この記事では、Device Update エージェントをモジュール ID としてプロビジョニングする方法について説明します。
注
最新の 1.x バージョンの Device Update エージェント参照実装を使用して、最新の機能強化を活用してください。 IoT デバイス ツインのプロパティ セクションで、インストールされているバージョンを確認します。 詳細については、サポートされているプラットフォームの Device Update IoT Hubを参照してください。
モジュール 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 デバイス更新エージェント
- ゲートウェイの背後にある切断されたデバイス
パッケージの更新の準備
パッケージ ベースの更新プログラムをインストールするように 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.gpgsudo 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 updatesudo 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 (AIS) を使用するか、デバイスで直接資格情報を構成することでプロビジョニングできます。
Azure IoT Identity Service (AIS) を使用する
「Azure IoT Identity Service のインストール」にある手順に従って、IoT Identity Service の最新バージョンをインストールします。
「Azure IoT Identity Service の構成」の手順に従って、IoT Identity Service を構成します。 デバイス更新エージェントに接続情報を提供できるように、サービスが適切なデバイスまたはモジュール ID で構成されていることを確認します。
次のコマンドを実行して、Device Update エージェントをインストールします。
sudo apt-get install deviceupdate-agent
注
IoT デバイスで IoT Identity Service または IoT Identity Service が含まれている IoT Edge を実行できない場合でも、Device Update エージェントをインストールし、接続文字列 または x.509 証明書を使用して構成できます。
接続文字列を使用する
テスト用または制約のあるデバイスの場合、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" ファイル コンテンツの例」を参照してください。
X.509 証明書を使用する
Device Update エージェント バージョン 1.3.0 以降では、X.509 証明書を使用したIoT Hubの認証がサポートされています。 Azure IoT Hubでは、2 つの X.509 証明書構成方法がサポートされています。
- CA 署名証明書 (推奨): デバイスは、信頼された証明機関 (CA) によって発行された証明書を使用して認証します。
- 自己署名証明書 (拇印ベース):各デバイス ID は、認証時に検証IoT Hub証明書の拇印で構成されます。
X.509 認証を構成する
X.509 認証が有効になっているIoT Hubにデバイス ID を登録します。
- 次のいずれかを使用してデバイスを構成します。
- 信頼された証明機関 (CA) によって発行された証明書。
- 登録された拇印を含む自己署名証明書。
- デバイスに Device Update エージェントをインストールします。
デバイス プロビジョニング サービス (DPS) を使用して、デバイス ID と証明書をプロビジョニングできます。 ただし、DPS はモジュール ID をプロビジョニングしません。 デバイス更新エージェントの構成は、引き続きデバイスで完了する必要があります。
ハードウェアベースのキー (セキュリティで保護されたキー処理用のハードウェア セキュリティ モジュール (HSM) や PKCS#11 ベースのキー ストレージなど) などの高度なシナリオを含む詳細な構成手順については、「X.509 認証ガイド: X.509 クライアント証明書認証の使用方法を参照してください。
注
Device Update エージェントでの X.509 認証のサポートでは、標準のAzure IoT Hub ID 構成が使用されます。 この機能は、Azure Device Registry (ADR) 証明書管理 (プレビュー) と統合されていません。
Device Update エージェントを構成する
Device Update エージェントをインストールした後、次のコマンドを実行して Device Update 構成ファイルを編集します。
sudo nano /etc/adu/du-config.json
du-config.json ファイルに、Place value here プレースホルダーを含んだすべての値を設定します。
Azure IoT Identity Service (AIS)
-
"connectionType":"AIS" -
"connectionData":""(空の文字列)
注
Azure IoT Identity Service (AIS) を使用する場合は、デバイス更新エージェントに正しい ID を提供するようにサービスを構成する必要があります。 これには、 config.toml での ID の構成や、エージェントが適切なデバイスまたはモジュール ID に関連付けられているかどうかの確認が含まれます。 Device Update エージェントがモジュールとして実行される場合は、AIS がモジュールの接続情報をエージェントに返すことができるように、対応するモジュール ID を構成する必要があります。 構成の詳細については、「 Azure IoT Identity Service の構成を参照してください。
接続文字列
-
"connectionType":"string" -
"connectionData":"HostName=<hub>.azure-devices.net;DeviceId=<device>;SharedAccessKey=<key>"(IoT Hub ホスト名、デバイス ID、共有アクセス キーに置き換えます)
X.509 証明書
-
"connectionType":"x509" -
"connectionData":"HostName=<hub>.azure-devices.net;DeviceId=<device>;x509=true"(IoT Hub ホスト名とデバイス ID に置き換えます) -
"connectionX509CertFilePath":"/etc/adu/certs/client.pem" -
"connectionX509PrivateKeyFilePath":"/etc/adu/certs/client.key" -
"connectionX509CaCertFilePath":"/etc/adu/certs/ca.pem"
完全な構成の詳細については、「Azure Device Update Agent 構成ガイドを参照してください。
詳細については、「 デバイス更新プログラムの構成ファイル」を参照してください。 例については、「"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 です。
次のコマンドを実行して、systemd オーバーライド構成ディレクトリとオーバーライド ファイルを作成します。
sudo mkdir -p /etc/systemd/system/deviceupdate-agent.service.d
sudo nano /etc/systemd/system/deviceupdate-agent.service.d/override.conf
プロキシの詳細を構成に追加する
[Service]
Environment="HTTP_PROXY=http://your.proxy.server:port"
Environment="HTTPS_PROXY=http://your.proxy.server:port"
エージェントを再起動して変更を適用します。
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl restart deviceupdate-agent
次に、環境変数が適用されていることを確認できます。
sudo systemctl show deviceupdate-agent | grep -i proxy
Device Update エージェントをビルドして実行する
独自のカスタム Device Update エージェントをビルドして変更することもできます。 「Device Update エージェントのビルド方法」にある手順に従って、ソースから Device Update エージェントをビルドします。
エージェントが正常にビルドされたら、「Device Update for IoT Hub 参照エージェントの実行方法」に従ってエージェントを実行します。 エージェントをイメージに組み込むために必要な変更を行うには、「Device Update エージェント コードを変更する方法」に従います。
トラブルシューティング
問題が発生した場合は、「Device Update for IoT Hub のトラブルシューティング ガイド」をご覧ください。問題を解決し、Microsoft に提供する必要がある情報を収集するのに役に立ちます。