一般提供開始(GA)したAzure IoT Edgeをインストールしてみた

6/27にAzure IoT EdgeがGA(一般提供開始)しましたが、なかなかまとまった時間が取れず、、、3週間ほど遅れましたが、動かしてみました。というか、入れてみました程度。

azure.microsoft.com

みんな大好きラズパイで試すことにします。
最新はRaspberry Pi Model B+(RasPi3B+)ですが、今回は少しスペックの低いRaspberry Pi Model B(RasPi3B)で。
深い理由があるわけではなく、、、まだRasPi3B+、買っていないものですから。(焦

RasPi3B + Raspbian

いつものように、マイクロSDをSDFormatterでイレースしてから、Win32DiskImagerでRaspbianイメージをマイクロSDに書き込みます。
Raspbianイメージは現時点最新のLite、2018-06-27-raspbian-stretch-lite.imgにしました。

f:id:matsujirushix:20180715203131p:plain

f:id:matsujirushix:20180715203343p:plain

あと、忘れずにbootにsshファイルを作っておきます。 Raspbian起動後、パソコンのTeraTermからSSH接続で操作したいので。

RasPiにマイクロSDを差して起動、無事、TeraTermから接続できました。

f:id:matsujirushix:20180715203800p:plain

この時点のディスク使用量はこちら。

$ df -k
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/root       15471088 1072076  13737812   8% /
devtmpfs          470116       0    470116   0% /dev
tmpfs             474724       0    474724   0% /dev/shm
tmpfs             474724    6300    468424   2% /run
tmpfs               5120       4      5116   1% /run/lock
tmpfs             474724       0    474724   0% /sys/fs/cgroup
/dev/mmcblk0p1     43539   22192     21347  51% /boot
tmpfs              94944       0     94944   0% /run/user/1000

IoT Edgeランタイムをインストール

最初にやるべきチュートリアルはこちら。クイックスタート。
LinuxWindowsの2種類あるので、Linuxの方を参照します。

docs.microsoft.com

本文にも書かれていますが、IoT Edgeラインタイムをインストールする部分はUbuntu 16.04を想定して書かれています。
RasPiの手順はこちらです。

docs.microsoft.com

手順に沿ってコマンドを実行していきましょう。

mobyのエンジンとCLIをインストールします。(CLIは必須ではありません。)

$ curl -L https://aka.ms/moby-engine-armhf-latest -o moby_engine.deb && sudo dpkg -i ./moby_engine.deb
$ curl -L https://aka.ms/moby-cli-armhf-latest -o moby_cli.deb && sudo dpkg -i ./moby_cli.deb
$ sudo apt-get install -f

次に、IoT Edgeセキュリティデーモンをインストールします。
(これ、Previewのときは無かったような)

$ curl -L https://aka.ms/libiothsm-std-linux-armhf-latest -o libiothsm-std.deb && sudo dpkg -i ./libiothsm-std.deb
$ curl -L https://aka.ms/iotedged-linux-armhf-latest -o iotedge.deb && sudo dpkg -i ./iotedge.deb
$ sudo apt-get install -f

IoT Edgeランタイムをセットアップ

/etc/iotedge/config.yaml<ADD DEVICE CONNECTION STRING HERE>に、IoT Hubに作成したIoT Edgeの接続文字列(Connection string)を記入して、IoT Edgeセキュリティデーモンを再起動します。

$ sudo vi /etc/iotedge/config.yaml
$ sudo systemctl restart iotedge

この時点のディスク使用量はこちら。

$ df -k
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/root       15471088 1328336  13481552   9% /
devtmpfs          470116       0    470116   0% /dev
tmpfs             474724       0    474724   0% /dev/shm
tmpfs             474724    6324    468400   2% /run
tmpfs               5120       4      5116   1% /run/lock
tmpfs             474724       0    474724   0% /sys/fs/cgroup
/dev/mmcblk0p1     43539   22192     21347  51% /boot
tmpfs              94944       0     94944   0% /run/user/1000

IoT Edgeランタイムの稼働確認

いくつかのコマンドで、IoT Edgeランタイムの稼働状況を確認することができます。

コマンド 説明
systemctl status iotedge IoT Edgeデーモンの稼働状況
sudo iotedge list 稼働しているIoT Edgeモジュールの一覧
sudo iotedge logs edgeAgent IoT Edgeエージェントのログ表示

従来の(?)、Dockerコマンドも使えます。

$ sudo docker ps
CONTAINER ID        IMAGE                                      COMMAND                   CREATED             STATUS              PORTS               NAMES
ffca46f992c6        mcr.microsoft.com/azureiotedge-agent:1.0   "/bin/sh -c 'echo \"$…"   7 minutes ago       Up 7 minutes                            edgeAgent
$ sudo docker images
REPOSITORY                             TAG                 IMAGE ID            CREATED             SIZE
mcr.microsoft.com/azureiotedge-agent   1.0                 b4496705558b        2 weeks ago         229MB

まとめ

  • Previewと比べ、IoT Edgeランタイムを動かすまでがチョー簡単になった。所要時間、約20分。
  • ディスク使用量は+250MB。
  • IoT Edgeの接続文字列がコマンドライン引数からファイル設定に変わった。このほうが便利。
  • Azure IoT Edgeの公式サポートはDockerではなくmoby。(mobyってなんだろう、、、)
  • IoT Edgeのソースはこちら