Azure IoT Edge を使ったハンズオンをしました。 基礎的な検証に必要な情報のリンクをまとめます。
開発環境の構築
Prerequisites
- Docker
- Visual Studio Code
- Azure
- Azure CLI
Azure リソース構築
Azure CLI
サービス側のリソースとして、Azure IoT Hub, Azure Container Registry を作成します。
# Parameters
LOCATION="japaneast"
RESOURCE_GROUP_NAME="handson_iotedge"
IOTHUB_NAME="iothub0322"
CONTAINER_REGISTRY_NAME="acr0322"
DEVICE_ID="myEdgeDevice"
# create resource group
az group create \
--name $RESOURCE_GROUP_NAME \
--location $LOCATION
# create Azure IoT Hub
az iot hub create \
--resource-group $RESOURCE_GROUP_NAME \
--name $IOTHUB_NAME \
--sku F1 \
--partition-count 2
# create device identity in IoT Hub
az iot hub device-identity create \
--device-id $DEVICE_ID \
--edge-enabled \
--hub-name $IOTHUB_NAME
# create Azure Container Registry
# ref. https://learn.microsoft.com/ja-jp/azure/container-registry/container-registry-get-started-azure-cli#create-a-container-registry
az acr create \
--resource-group $RESOURCE_GROUP_NAME \
--name $CONTAINER_REGISTRY_NAME \
--sku Basic \
--admin-enabled true
# copy connection string for creating VM later.
CONNECTION_STRING=$(az iot hub device-identity connection-string show --device-id $DEVICE_ID --hub-name $IOTHUB_NAME -o tsv)
エッジ側のリソースとして、仮想マシン上にアプリケーションをデプロイします。
Azure IoT Edge によるアプリケーションのデプロイでは、エッジ側にコンテナランタイムやエージェントのインストールが必要になります。
クイック スタート:初めての IoT Edge モジュールを Linux 仮想デバイスにデプロイするを参考に ARM テンプレートを利用して、仮想マシンを以下のコマンドでデプロイします。
# Parameters
LOCATION="japaneast"
RESOURCE_GROUP_NAME="handson_iotedge_device"
# create resource group
az group create \
--name $RESOURCE_GROUP_NAME \
--location $LOCATION
# create VM instance via Azure Portal
# 1. Go to `Deploy a custom template` at Azure Portal
# 2. Go to `Build your own template in the editor` to paste template at `https://raw.githubusercontent.com/Azure/iotedge-vm-deploy/1.4/edgeDeploy.json`
# 3. Fill in the parameters and create VM
仮想マシン上では、以下のように iotedge
コマンドを用いて状態の確認ができます。
# login to VM via SSH with the password specified above
ssh adminUser@"$VM_NAME.$LOCATION".cloudapp.azure.com
sudo iotedge -h
sudo iotedge system status
sudo iotedge system logs
sudo iotedge list
sudo iotedge logs <module> -f
Terraform
WIP
開発
IoT Edge Module 開発
IoT Edge Module としてエッジに配信するための Docker イメージを作成します。Visual Studio Code 拡張機能を入れて GUI 操作で簡単にデプロイできます。
操作手順は チュートリアル: Linux コンテナーを使用して IoT Edge モジュールを開発する を参照ください。
各言語ごとのチュートリアルは、例えば Python の場合 チュートリアル: Linux コンテナーを使用して Python IoT Edge モジュールを開発してデプロイする が参考になります。
Azure Container Registry の接続設定
Azure Container Registry に Docker image を push するため、以下の設定ファイルを作成します。
# create .env corresponding to your Azure Container Registry
cat .env
CONTAINER_REGISTRY_ADDRESS="YOUR_CONTAINER_REGISTRY.azurecr.io"
CONTAINER_REGISTRY_USERNAME="YOUR_USERNAME"
CONTAINER_REGISTRY_PASSWORD="YOUR_PASSWORD"
設定情報は、Azure Portal の Azure Container Registry > Settings > Access Keys
から確認できます。
ACR にログインするため、以下のコマンドを実行します。
az acr login --name $CONTAINER_REGISTRY_NAME
IoT Edge Module の Build & Push
- Azure IoT Hub の VSCode 拡張をインストール
- コマンドパレットを開き、
Azure IoT Hub : Select IoT Hub
から対象となる IoT Hub を選択 - VSCode の Explorer にて
deployment.template.json
を右クリックし、Build and Push IoT Edge Solution
を選択 - Docker Image の Build と ACR への Push が実行され、ACR の Repository にコンテナイメージが追加される
IoT Module のデプロイ
- VSCode の Explorer の
AZURE IOT HUB
タブの対象デバイスを右クリックしCreate Deployment for Single Device
を選択 config/deployment.json
を選択して IoT Edge Module を転送
Azure Portal の Azure IoT Hub > IoT Edge
から適切に IoT Edge Module が設定されているか確認できます。
または、転送先の Edge から以下のコマンドで IoT Edge Module の起動状態を確認できます。
sudo iotedge list