はじめに
横河電機のエッジコントローラe-RT3 Plus F3RP70-2L1をAzure IoT認定デバイス2に登録する担当者として、Azure IoT Edgeについて勉強しました。
その内容を数回に分けてご紹介します。
環境
動作確認したデバイス(OS)
- e-RT3 Plus F3RP70-2L(Ubuntu 18.04 32bit)
- Raspberry Pi 4 Model B (Ubuntu Server 18.04 32bit)
これらのデバイスでは armhf
アーキテクチャのパッケージが動作します。
また、Windows 10 搭載のPCでデバイスを操作してIoT Edgeをインストールしています。
Azure IoT Edgeとは
Azure IoT Edgeとは、エッジ機器に向けたIoT環境の構築が簡単に実現できるサービスです。Azure IoT Edgeを使用することでエッジ機器を簡単にクラウドに接続でき、データのやり取りやモジュール(エッジ機器で実行させるプログラム)のデプロイが遠隔でできるようになります。
詳しくはAzure IoT Edgeのウェブサイトをご覧ください。
準備
Azureアカウントの作成
まだアカウントを所持していない場合は作成します。
初めの期間は一部サービスが無料で使用できたりクレジットが付いてくるので、お試し感覚で始められます。
IoT Hubの作成
Azureへサインアップしたら、Azure PortalからIoT Hubを作成します。
-
Azure Portalの左上にある+マークの「リソースを作成」をクリックします。
-
左のカテゴリから「モノのインターネット(IoT)」をクリックし、右側に表示されるサービスから「IoT Hub」をクリックします。
-
基本の情報を入力します。
サブスクリプション、リソースグループ、領域を選択し、任意のIoT Hub名を入力します。
リソースグループをまだ作成していない場合は「新規作成」をクリックして作成します。
入力出来たら上部の「ネットワーク」タブか下部の「次へ:ネットワーク」ボタンをクリックし次へ進みます。
-
ネットワークの情報を入力します。
任意の内容を選択してください。
今回はあらかじめ選択されている「パブリック エンドポイント (すべてのネットワーク)」を選択します。
その後、上部の「サイズとスケール」タブか下部の「次へ:サイズとスケール」ボタンをクリックし次へ進みます。 -
サイズとスケールの情報を入力します。
「価格とスケールティア」ではIoT Edgeが使用可能なFreeレベルかStandardレベルから任意のレベルを選択します。
Freeレベルは無料で使用することが可能で、Standardレベルは課金が必要です。
その他の項目は今回は特に変更せずに次の「タグ」へ進みます。
-
タグの情報を入力します。
今回はタグは使用しないので、何も入力せずに次の「確認および作成」へ進みます。 -
確認および作成
入力した情報に問題がなければ左下の青い「作成」ボタンをクリックします。
これでIoT Hubの作成は完了です。
次回の作業でIoT Hubへ接続します。
インストール
基本的にはMicrosoft公式のドキュメント3に従いますが、こちらではARM 32bitデバイスでの手順に絞って説明します。
作業するディレクトリは特に問いません。
リポジトリの登録
下記のコマンドでリポジトリを登録します。
curl https://packages.microsoft.com/config/ubuntu/18.04/multiarch/prod.list > ./microsoft-prod.list
次に、apt
コマンド使用時に参照できるように sources.list.d
へコピーします。
sudo cp ./microsoft-prod.list /etc/apt/sources.list.d/
※Proxy設定やsudoers設定が必要な場合の説明が補足セクションにあります。
GPG公開キーの登録
下記のコマンドでGPG公開キーを登録します。
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
sudo cp ./microsoft.gpg /etc/apt/trusted.gpg.d/
コンテナーランタイムのインストール
パッケージリストを更新し、コンテナーランタイムのMobyエンジンと、Mobyコマンドラインインターフェイスをインストールします。
Mobyエンジンのインストール時にMobyコマンドラインインターフェイス(moby-cli)も一緒にインストールされます。
sudo apt update
sudo apt install moby-engine
Azure IoT Edgeセキュリティデーモンのインストール
公式ドキュメント3では apt
コマンドでのインストール手順が初めに紹介されていますが、armhf
アーキテクチャのパッケージはこちらの手順では取得できませんでした。
$ sudo apt search iotedge
Sorting... Done
Full Text Search... Done
iotedge/bionic 1.0.9.4-1 amd64 # amd64しかない
Azure IoT Edge Security Daemon
なので、Azure IoT Edgeリリースから armhf
アーキテクチャのセキュリティデーモンをインストールします。
リリース一覧からインストールしたいバージョンのAssetsを展開し、libiothsm
と iotedge
のUbuntu用 armhf
アーキテクチャのリンクを探します。
一覧にはUbuntu 16.04のファイルしかありませんが、Ubuntu 18.04でも問題なく動作します。
2020/9/1現在は1.0.9.4が最新の安定版のため、本バージョンを例にして説明します。
※ libiothsm
から先にインストールしてください。
libiothsm
上記の画像の libiothsm-std_1.0.9.4-1_ubuntu16.04_armhf.deb
を右クリックし、リンクのアドレスをコピーします。
コピーしたリンクを下記のコマンドの <libiothsm-std link>
に置き換えて実行します。
curl -L <libiothsm-std link> -o libiothsm-std.deb && sudo dpkg -i ./libiothsm-std.deb
実際のコマンドは以下の通りです。
curl -L https://github.com/Azure/azure-iotedge/releases/download/1.0.9.4/libiothsm-std_1.0.9.4-1_ubuntu16.04_armhf.deb -o libiothsm-std.deb && sudo dpkg -i ./libiothsm-std.deb
iotedge
上記の画像の iotedge_1.0.9.4-1_ubuntu16.04_armhf.deb
を右クリックし、リンクのアドレスをコピーします。
コピーしたリンクを下記のコマンドの <iotedge link>
に置き換えて実行します。
curl -L <iotedge link> -o iotedge.deb && sudo dpkg -i ./iotedge.deb
実際のコマンドは以下の通りです。
curl -L https://github.com/Azure/azure-iotedge/releases/download/1.0.9.4/iotedge_1.0.9.4-1_ubuntu16.04_armhf.deb -o iotedge.deb && sudo dpkg -i ./iotedge.deb
インストールの確認
コンテナーランタイムとAzure IoT Edgeセキュリティデーモンがインストールできていることを確認します。
- コンテナーランタイム
以下のコマンドで確認します。
$ docker --version
Docker version 19.03.12+azure, build 0ed913b885c8919944a2e4c8d0b80a318a8dd48b
- Azure IoT Edgeセキュリティデーモン
以下のコマンドで確認します。
$ iotedge --version
iotedge 1.0.9.4
補足
Proxy設定
社内での作業にはProxy設定が必要でした。
個人的に最も苦労したことの一つがProxyに関することなので、それぞれ環境は異なると思いますが私の設定した内容をご紹介します。
apt
、curl
コマンドを使用するため環境変数にProxy URLを設定します。
Proxy URLは例えば http://username:password@example.com:port/
です。
ご自身の環境によって変わりますので、詳しくは管理者の方へお問い合わせください。
今回は http_proxy
、https_proxy
それぞれに設定して作業しました。
export http_proxy="http://username:password@xxx.com:port/"
export https_proxy="http://username:password@xxx.com:port/"
環境変数は env
コマンドで確認できます。
こちらの手順で設定する場合、ログオフやシャットダウンを行うと設定内容が消去されます。
また、Proxy設定を行った場合は環境変数を引き継ぐ -E
オプションを sudo
使用時に付与して実行してください。
# aptコマンドの例
sudo -E apt update
sudo -E apt install moby-engine
設定した環境変数の消去は以下のコマンドで行います。
unset http_proxy https_proxy
sudoers設定
一般ユーザでの作業時にroot権限が必要なコマンドを使用する場合は通常 sudo
を先頭に加えますが、以下のように拒否されてしまうことがあります。
# 一般ユーザusernameでの作業
$ sudo apt update
[sudo] password for username: # パスワードを入力
username is not in the sudoers file. This incident will be reported.
このような場合に設定を行います。
設定はroot権限で行うので、一旦 su
コマンドで root
ユーザに切り替えます。
$ su
Password: # rootのパスワードを入力
root@ubuntu:/home/username#
visudo
コマンドで設定ファイルを編集します。
visudo
設定ファイルに以下の行を書き加えて保存します。
username
はご自身のユーザ名に置き換えてください。
username ALL=(ALL) ALL # 一般ユーザusernameの場合
root
からログアウトし、sudo
コマンドが通るか確認します。
root@ubuntu:/home/username# exit
exit
username@ubuntu:~$ sudo apt update
[sudo] password for username: # パスワードを入力
Get:1 http://ports.ubuntu.com/ubuntu-ports bionic InRelease [242 kB]
...
username@ubuntu:~$
次回
IoT Edgeランタイムのインストールができました。
次回はセキュリティデーモンを設定し、IoT Hubへ接続する手順を書いていきます。
→次回