IoT Edge 対応の Linux VM をデプロイする
IoT Edge の構成をテストするには、IoT Edge ランタイムを仮想マシン (VM) に展開する必要があります。
IoT Edge デバイスを店舗に展開する前に、デバイスが意図したとおりに動作することを検証する必要があります。 シナリオをテストするため、あなたは IoT Edge ランタイムを Azure Linux VM に展開した後、IoT Edge モジュールをこの VM に展開する予定です。
ここでは、IoT Edge のいくつかの主要な概念を確認し、IoT Edge デバイスが Azure IoT Central アプリケーションに接続する方法と、Azure IoT Central が IoT Edge モジュールを IoT Edge ランタイムに展開する方法について学習します。
IoT Edge ランタイムとは
Azure IoT Edge ランタイムは、カスタム ロジックやクラウド ロジックを IoT Edge デバイスで実行することを可能にするものです。 ランタイムは、IoT Edge デバイスに常駐して管理操作や通信処理を実行します。 ランタイムは:
デバイスにワークロードをインストールし、更新する。
デバイス上の Azure IoT Edge のセキュリティ標準を維持する。
IoT Edge モジュールの実行状態を絶えず確保する。
モジュールの正常性をクラウドに報告してリモート監視を可能にする。
次の間の通信を管理する。
- ダウンストリーム デバイスと IoT Edge デバイス
- IoT Edge デバイス上のモジュール間
- IoT Edge デバイスとクラウド間
- IoT Edge デバイス
IoT Edge モジュールとは
IoT Edge モジュールは、エッジでビジネス ロジックを実行する実行ユニットです。 モジュールは Docker 互換コンテナーとして実装されます。 複数のモジュールを互いに通信するように構成し、データ処理パイプラインを作成することができます。 カスタム モジュールを開発するか、特定の Azure サービスをパッケージ化して、エッジからオフラインで洞察が得られるモジュールとしてまとめることができます。 モジュールは、Docker コンテナーで実行されるため、VM と物理デバイスのどちらにインストールされても、同じように動作します。
次のユニットでは、IoT Edge ランタイムをインストールし、環境データを収集して Azure IoT Central に送信するカスタム モジュールを展開します。 これで、Azure IoT Central のオペレーターが、アプリケーションのダッシュボードでテレメトリを確認して、店舗内の環境条件を監視できます。
IoT Edge デバイスが Azure IoT Central に接続する方法
IoT Edge デバイスは、他のデバイスと同様に、IoT Hub Device Provisioning Service (DPS) を使用して Azure IoT Central アプリケーションに接続します。 前のユニットで、デバイスを Azure IoT Central アプリケーションに追加したときに、"スコープ ID" と "デバイス キー" を書き留めました。 これらの値を、IoT Edge デバイス上の IoT Edge 構成ファイルに追加します。 この TOML ファイルの関連セクションは次のようになります。 registration_id
はデバイス ID です。
[provisioning]
source = "dps"
global_endpoint = "https://global.azure-devices-provisioning.net"
id_scope = "YOUR_ID_SCOPE"
[provisioning.attestation]
method = "symmetric_key"
registration_id = "YOUR_DEVICE_ID"
symmetric_key = { value = "YOUR_DEVICE_KEY" }
次のユニットでは、IoT Edge デバイスに使用する展開スクリプトによって、構成ファイルが自動的に編集されます。
Azure IoT Central がモジュールを IoT Edge ランタイムに展開する方法
前のユニットで、環境センサー用のデバイス テンプレートを作成するときに、配置マニフェストをテンプレートにアップロードしました。 IoT Edge ランタイムは、Azure IoT Central アプリケーションに接続すると、配置マニフェストをダウンロードします。 ランタイムでは、配置マニフェストの情報を使用して、インストールするモジュールとそれらを構成する方法が決定されます。 モジュールは、Azure Container Registry や Docker Hub などのコンテナー レジストリからダウンロードされます。
使用した配置マニフェストにより、必要な 2 つのシステム モジュール edgeAgent
と edgeHub
、およびカスタム モジュール SimulatedTemperatureSensor
がインストールされます。 このカスタム モジュールは、テレメトリ ambient と machine を Azure IoT Central に送信し、2 つのプロパティ SendData と SendInterval を持っています。オペレーターはこれらを使用して、モジュールを構成できます。
{
"modulesContent": {
"$edgeAgent": {
"properties.desired": {
"schemaVersion": "1.0",
"runtime": {
"type": "docker",
"settings": {
"minDockerVersion": "v1.25",
"loggingOptions": "",
"registryCredentials": {}
}
},
"systemModules": {
"edgeAgent": {
"type": "docker",
"settings": {
"image": "mcr.microsoft.com/azureiotedge-agent:1.4",
"createOptions": "{}"
}
},
"edgeHub": {
"type": "docker",
"status": "running",
"restartPolicy": "always",
"settings": {
"image": "mcr.microsoft.com/azureiotedge-hub:1.4",
"createOptions": "{}"
}
}
},
"modules": {
"SimulatedTemperatureSensor": {
"version": "1.0",
"type": "docker",
"status": "running",
"restartPolicy": "always",
"settings": {
"image": "mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:1.4.6",
"createOptions": "{}"
}
}
}
}
},
"$edgeHub": {
"properties.desired": {
"schemaVersion": "1.0",
"routes": {
"route": "FROM /* INTO $upstream"
},
"storeAndForwardConfiguration": {
"timeToLiveSecs": 7200
}
}
},
"SimulatedTemperatureSensor": {
"properties.desired": {
"SendData": true,
"SendInterval": 10
}
}
}
}