演習 - Linux 用 IoT Edge ランタイムをインストールする

完了

開始するには、次のものが必要です。

  • Microsoft Azure サブスクリプション。 アカウントを取得済みでない場合は、https://azure.microsoft.com/free から無料評価版にサインアップできます。 学生の場合は、Azure For Students アカウントにサインアップします。

クラウド リソースを作成する

リソース グループを作成する

Azure Cloud Shell 環境で、次の手順を実行します。

  1. Cloud Shell の環境として、左上の [Bash] を選択します。

  2. Azure IoT の拡張機能を Cloud Shell インスタンスに追加します。

    az extension add --name azure-iot
    
  3. 次のコマンドを使用して、場所 eastus2 にリソース グループを作成します。 ご自分のリソース グループに名前を付けます。

    az group create --name <resource-group-name> --location eastus2   
    

IoT Hub で IoT Edge デバイスを作成する

  1. 次のコマンドを使用して F1 レベルの IoT Hub を作成します。 ご自分の IoT Hub に名前を付け、お使いのリソース グループと置き換えます。

    az iot hub create --resource-group <resource-group-name> --name <iot-hub-name> --sku F1 --partition-count 2  
    
  2. 接続するデバイスは、あらかじめお使いの IoT Hub に登録されている必要があります。 次のコマンドを実行して、ご自分の IoT ハブにデバイス ID を作成します。 ご自分の IoT デバイスに名前を付け、お使いの IoT Hub と置き換えます。

    az iot hub device-identity create --hub-name <iot-hub-name> --device-id <device-id>
    

IoT Edge for Linux をインストールする

Note

Linux 用 IoT Edge のインストールについて詳しく知りたい場合は、Microsoft のページにアクセスしてください。

  1. Linux コンピューターでターミナルを開きます。

  2. デバイスのオペレーティング システムに対応するリポジトリ構成をインストールします。

    Ubuntu Server 18.04:

    curl https://packages.microsoft.com/config/ubuntu/18.04/multiarch/prod.list > ./microsoft-prod.list
    
  3. 生成されたリストを sources.list.d ディレクトリにコピーします。

    sudo cp ./microsoft-prod.list /etc/apt/sources.list.d/
    
  4. Microsoft GPG 公開キーをインストールします。

    curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
    sudo cp ./microsoft.gpg /etc/apt/trusted.gpg.d/
    

コンテナー エンジンをインストールする

Azure IoT Edge は、OCI と互換性のあるコンテナー ランタイムに依存します。 運用環境のシナリオでは、Moby エンジンを使用することをお勧めします。 Moby エンジンは、Azure IoT Edge で公式にサポートされている唯一のコンテナー エンジンです。 Docker CE/EE コンテナー イメージは、Moby ランタイムと互換性があります。

  1. デバイスのパッケージ リストを更新します。

    sudo apt-get update
    
  2. Moby エンジンをインストールします。

    sudo apt-get install moby-engine
    

Moby コンテナー エンジンをインストールするときにエラーが発生する場合は、Linux カーネルに Moby との互換性があることを確認します。 埋め込みデバイスの一部の製造元からは、コンテナー エンジンとの互換性のために必要な機能を備えていないカスタム Linux カーネルを含むデバイス イメージが提供されています。 Moby から提供されている check-config スクリプトを使用する次のコマンドを実行して、カーネルの構成を確認します。

curl -sSL https://raw.githubusercontent.com/moby/moby/master/contrib/check-config.sh -o check-config.sh
chmod +x check-config.sh
./check-config.sh

スクリプトの出力で、Generally NecessaryNetwork Drivers の下のすべての項目が有効になっていることを確認します。 足りない機能がある場合は、カーネルをソースからリビルドし、適切なカーネルの .config に含める関連モジュールを選択することで、それらを有効にします。同様に、defconfigmenuconfig などのカーネル構成ジェネレーターを使用している場合は、それぞれの機能を見つけて有効にし、ご自分のカーネルを適宜再構築します。 新たに変更されたカーネルを展開したら、check-config スクリプトをもう一度実行して、必要なすべての機能が正常に有効になっていることを確認します。

IoT Edge セキュリティ デーモンをインストールする

IoT Edge セキュリティ デーモンによって、IoT Edge デバイス上にセキュリティ標準が提供されて維持されます。 デーモンは起動のたびに開始され、IoT Edge ランタイムの残りの部分を開始することでデバイスをブートストラップします。

  1. デバイスのパッケージ リストを更新します。

    sudo apt-get update
    
  2. 使用できる IoT Edge のバージョンを確認します。

    apt list -a iotedge
    
  3. 最新バージョンのセキュリティ デーモンをインストールします。次のコマンドを使用すると、libiothsm-std パッケージの最新バージョンもインストールされます。

    sudo apt-get install iotedge
    

クラウド ID を使用してデバイスをプロビジョニングする

対称キーを使用して認証する

この時点で、IoT Edge ランタイムは Linux デバイスにインストールされています。クラウドの ID と認証情報を使用してデバイスをプロビジョニングする必要があります。

このセクションでは、対称キー認証を使用してデバイスをプロビジョニングする手順について説明します。 デバイスを IoT Hub に登録し、デバイス情報から接続文字列を取得している必要があります。

IoT Edge デバイスで構成ファイルを開きます。

sudo nano /etc/iotedge/config.yaml

ファイルのプロビジョニング構成を見つけ、"Manual provisioning configuration using a connection string" セクションがまだコメント解除されていない場合はコメント解除します。

```toml
# Manual provisioning configuration using a connection string
provisioning:
  source: "manual"
  device_connection_string: "<ADD DEVICE CONNECTION STRING HERE>"
```

device_connection_string の値を IoT Edge デバイスからの接続文字列で更新します。 他のプロビジョニング セクションがコメント アウトされていることを確認します。provisioning: 行に先行する空白文字はなく、入れ子になった項目は 2 つの空白でインデントされていることを確認します。

クリップボードの内容を Nano に貼り付けるには、Shift キーを押しながら右クリックするか、Shift キーを押しながら Insert キーを押します。

ファイルを保存して閉じます。

CTRL + X`, `Y`, `Enter

構成ファイルにプロビジョニング情報を入力した後、デーモンを再起動します。

sudo systemctl restart iotedge

構成が成功したことを確認する

IoT Edge デバイスにランタイムが正常にインストールされ、構成されていることを確認します。

IoT Edge システム サービスが実行されていることを確認します。

sudo systemctl status iotedge