16
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Ubuntu 18.04にAzure IoT Edgeランタイムをインストールする

Last updated at Posted at 2020-09-01

はじめに

横河電機のエッジコントローラ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アカウントの作成

まだアカウントを所持していない場合は作成します。
初めの期間は一部サービスが無料で使用できたりクレジットが付いてくるので、お試し感覚で始められます。

Microsoft Azure

IoT Hubの作成

Azureへサインアップしたら、Azure PortalからIoT Hubを作成します。

  1. Azure Portalの左上にある+マークの「リソースを作成」をクリックします。

  2. 左のカテゴリから「モノのインターネット(IoT)」をクリックし、右側に表示されるサービスから「IoT Hub」をクリックします。
    iothub_001_p.png

  3. 基本の情報を入力します。
    サブスクリプション、リソースグループ、領域を選択し、任意のIoT Hub名を入力します。
    リソースグループをまだ作成していない場合は「新規作成」をクリックして作成します。
    入力出来たら上部の「ネットワーク」タブか下部の「次へ:ネットワーク」ボタンをクリックし次へ進みます。
    iothub_002_p.png

  4. ネットワークの情報を入力します。
    任意の内容を選択してください。
    今回はあらかじめ選択されている「パブリック エンドポイント (すべてのネットワーク)」を選択します。
    その後、上部の「サイズとスケール」タブか下部の「次へ:サイズとスケール」ボタンをクリックし次へ進みます。

  5. サイズとスケールの情報を入力します。
    「価格とスケールティア」ではIoT Edgeが使用可能なFreeレベルかStandardレベルから任意のレベルを選択します。
    Freeレベルは無料で使用することが可能で、Standardレベルは課金が必要です。
    その他の項目は今回は特に変更せずに次の「タグ」へ進みます。
    iothub_003.png

  6. タグの情報を入力します。
    今回はタグは使用しないので、何も入力せずに次の「確認および作成」へ進みます。

  7. 確認および作成
    入力した情報に問題がなければ左下の青い「作成」ボタンをクリックします。

これで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を展開し、libiothsmiotedge のUbuntu用 armhf アーキテクチャのリンクを探します。
一覧にはUbuntu 16.04のファイルしかありませんが、Ubuntu 18.04でも問題なく動作します。
2020/9/1現在は1.0.9.4が最新の安定版のため、本バージョンを例にして説明します。
libiothsm から先にインストールしてください。

iotedge_001.png

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に関することなので、それぞれ環境は異なると思いますが私の設定した内容をご紹介します。

aptcurlコマンドを使用するため環境変数にProxy URLを設定します。
Proxy URLは例えば http://username:password@example.com:port/ です。
ご自身の環境によって変わりますので、詳しくは管理者の方へお問い合わせください。

今回は http_proxyhttps_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へ接続する手順を書いていきます。

次回

参考

  1. リアルタイムOSコントローラ e-RT3 Plus F3RP70-2L

  2. Azure Certified Device catalog

  3. Debian ベースの Linux システムに Azure IoT Edge ランタイムをインストールする 2

16
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?