チュートリアル: Ubuntu (18.04 x64) Simulator Reference Agent を使用した Device Update for Azure IoT Hub
Device Update for Azure IoT Hub では、イメージベース、パッケージベース、スクリプトベースの更新がサポートされています。
イメージ更新を使用すると、デバイスの最終状態の信頼性が高くなります。 通常、運用前環境と運用環境の間でイメージ更新の結果をレプリケートする方が簡単です。そうすれば、パッケージやその依存関係の場合と同様の課題が生じることがないからです。 アトミックな性質のため、A/B フェールオーバー モデルを簡単に導入することもできます。
このチュートリアルでは、Device Update for IoT Hub を使用して、エンド ツー エンドのイメージベースの更新を行う手順について説明します。
このチュートリアルでは、次の方法について説明します。
- イメージをダウンロードしてインストールします。
- IoT デバイスにタグを追加します。
- 更新プログラムをインポートする
- デバイス グループを作成する
- イメージの更新プログラムをデプロイします。
- 更新プログラムのデプロイを監視する
前提条件
Device Update アカウントとインスタンスをまだ作成していない場合は作成し、IoT ハブをまだ構成していない場合は構成します。
最新リリースのリリース アセットから Tutorial_Simulator.zip
という名前の ZIP ファイルをダウンロードして、解凍します。
デバイスを Azure IoT Hub に追加する
デバイス更新エージェントが IoT デバイスで実行された後、デバイスを IoT Hub に追加する必要があります。 IoT Hub 内から、特定のデバイスの接続文字列が生成されます。
Azure portal から、Device Update for IoT Hub を開始します。
新しいデバイスを作成します。
左側のペインで、[デバイス] に移動します。 次に、[新規] を選択します。
[デバイス ID] にデバイスの名前を入力します。 [キーの自動生成] チェックボックスがオンになっていることを確認します。
[保存] を選択します。
[デバイス] ページに戻ると、作成したデバイスが一覧に表示されているはずです。 そのデバイスを選択します。
デバイス ビューで、[プライマリ接続文字列] の横にある [コピー] アイコンを選択します。
後で次の手順で使用できるように、コピーした文字をどこかに貼り付けておきます。
このコピーした文字列は、対象のデバイスの接続文字列です。
Device Update エージェントをインストールしてシミュレーターとしてテストする
Azure IoT Edge ランタイムのインストール手順に従います。
注意
Device Update エージェントは IoT Edge に依存しません。 ただし、ID を取得して IoT Hub に接続するために、IoT Edge (1.2.0 以上) と一緒にインストールされる IoT ID サービス デーモンに依存します。
このチュートリアルでは取り上げませんが、IoT ID サービス デーモンは Linux ベースの IoT デバイスにスタンドアロンでインストールすることができます。 インストールの順序が重要です。 Device Update パッケージ エージェントは、IoT ID サービスの "後に" インストールする必要があります。 そうしないと、承認済みのコンポーネントとしてパッケージ エージェントが登録されず、IoT Hub との接続が確立されません。
次に、Device Update エージェントの .deb パッケージをインストールします。
sudo apt-get install deviceupdate-agent deliveryoptimization-plugin-apt
次のコマンドを実行して、IoT デバイスのモジュール (Device Update を使用してデバイスをプロビジョニングした方法によってはデバイス) のプライマリ接続文字列を構成ファイルに入力します。
sudo nano /etc/adu/du-config.json
シミュレーターとして実行するようにエージェントを設定します。 IoT デバイスで次のコマンドを実行します。これにより、Device Update エージェントは、シミュレーター ハンドラーを呼び出して、APT ('microsoft/apt:1') でパッケージの更新を処理します。
sudo /usr/bin/AducIotAgent --register-content-handler /var/lib/adu/extensions/sources/libmicrosoft_simulator_1.so --update-type 'microsoft/apt:1'
シミュレーター ハンドラーを登録して起動するには、次の形式を使用してプレースホルダーを入力します。
sudo /usr/bin/AducIotAgent --register--content-handler <full path to the handler file> --update-type <update type name>
前提条件でダウンロードした
Tutorial_Simulator.zip
内のファイルsample-du-simulator-data.json
が必要になります。ファイル
sample-du-simulator-data.json
を開き、内容をクリップボードにコピーします。nano sample-du-simulator-data.json
ファイルの内容を選択し、Ctrl+C キーを押します。 Ctrl+X キーを押してファイルを閉じ、変更は保存しません。
次のコマンドを実行して、tmp フォルダー内の
du-simulator-data.json
ファイルを作成して編集します。sudo nano /tmp/du-simulator-data.json
Ctrl+V キーを押して、内容をエディターに貼り付けます。 Ctrl+X キーを押して変更を保存してから、Y を選択します。
アクセス許可を変更します。
sudo chown adu:adu /tmp/du-simulator-data.json sudo chmod 664 /tmp/du-simulator-data.json
/tmp が存在しない場合。
sudo mkdir/tmp sudo chown root:root/tmp sudo chmod 1777/tmp
次のコマンドを実行して、Device Update エージェントを再起動します。
sudo systemctl restart adu-agent
Device Update for Azure IoT Hub ソフトウェアには、次のライセンス条項が適用されます。
エージェントを使用する前に、ライセンス条項をお読みください。 インストールして使用すると、これらの条項に同意したものと見なされます。 ライセンス条項に同意しない場合は、Device Update for IoT Hub エージェントをお使いいただけません。
注意
シミュレーターを使用してテストしたら、次のコマンドを実行して APT ハンドラーを呼び出し、無線でのパッケージの更新をデプロイします。
# sudo /usr/bin/AducIotAgent --register-content-handler /var/lib/adu/extensions/sources/libmicrosoft_apt_1.so --update-type 'microsoft/a pt:1'
デバイスにタグを追加する
Azure portal にサインインし、IoT ハブに移動します。
左側のペインの [デバイス] から、対象の IoT デバイスを見つけて、[デバイス ツイン] または [モジュール ツイン] に移動します。
Device Update エージェント モジュールの [モジュール ツイン] で、既存の Device Update タグ値を null 値に設定して削除します。 Device Update エージェントでデバイス ID を使用している場合は、[デバイス ツイン] でそれらの変更を行います。
次に示すように、Device Update の新しいタグ値を追加します。
"tags": { "ADUGroup": "<CustomTagValue>" }
更新プログラムのインポート
前提条件でダウンロードした
Tutorial_Simulator.zip
内のファイルTutorialImportManifest_Sim.importmanifest.json
およびadu-update-image-raspberrypi3.swu
が必要になります。 更新ファイルは、Raspberry Pi チュートリアルから再利用されます。 このチュートリアルでは更新がシミュレートされているため、特定のファイルの内容は問題になりません。Azure portal にサインインし、Device Update がある IoT Hub に移動します。 左側のウィンドウの [デバイスの自動管理]の下で、[更新プログラム] を選択します。
[更新] タブを選択します。
[+ 新しい更新プログラムのインポート] を選択します。
[+ ストレージ コンテナーから選択] を選択します。 [+ ストレージ アカウント] を使用して、既存のストレージ アカウントを選択するか、新しいストレージ アカウントを作成します。 次に、既存のコンテナーを選択するか、[+ コンテナー] を使用して新しいコンテナーを作成します。 このコンテナーは、インポート用に更新ファイルをステージするために使用されます。
注意
以前の更新プログラムから誤ってファイルをインポートしないように、更新プログラムをインポートするごとに新しいコンテナーを使用することをお勧めします。 新しいコンテナーを使用しない場合は、この手順を実行する前に、既存のコンテナーからファイルを削除してください。
コンテナーで [アップロード] を選択し、手順 1 でダウンロードしたファイルに移動します。 すべての更新ファイルを選択した後、[アップロード] を選択します。 続いて [選択] ボタンを選択して、[更新プログラムのインポート] ページに戻ります。
このスクリーンショットは、インポートの手順を示しています。 ファイル名は、例で使用されているものと一致しない場合があります。
[更新プログラムのインポート] ページで、インポートするファイルを確認します。 次に、[更新プログラムのインポート] を選択してインポート プロセスを開始します。
インポート プロセスが開始され、画面が [インポートの履歴] セクションに切り替わります。 [状態] 列にインポートが正常に完了したことが表示されたら、[使用可能な更新プログラム] 見出しを選択します。 インポートされた更新プログラムが一覧に表示されるはずです。
更新プログラムをインポートする方法の詳細については、こちらを参照してください。
更新グループの作成
ページの上部にある [グループとデプロイ] タブに移動します。
[グループの追加] を選択して、新しいグループを作成します。
一覧から [IoT Hub] タグと [デバイス クラス] を選択します。 次に [グループの作成] を選択します。
グループが作成された後、更新プログラムのコンプライアンス チャートとグループの一覧が更新されます。 更新プログラムのコンプライアンス チャートには、さまざまなコンプライアンス対応状態 (最新の更新状態、利用可能な新しい更新プログラムがある、更新プログラムのインストールが進行中) にあるデバイスの数が表示されます。 更新プログラムのコンプライアンスの詳細についてはこちらを参照してください。
新しく作成したグループと、新しいグループ内のデバイスで利用可能な更新プログラムが表示されます。 グループのデバイス クラスの要件を満たしていないデバイスがある場合は、対応する無効なグループに表示されます。 このビューから新しいユーザー定義グループに最適な利用可能な更新プログラムをデプロイするには、グループの横にある [デプロイ] を選択します。
タグを追加する方法と更新プログラム グループを作成する方向の詳細については、こちらをご覧ください。
更新プログラムをデプロイする
グループが作成された後、デバイス グループで使用可能な新しい更新プログラムが表示されます。 [最適な更新プログラム] の下にその更新プログラムへのリンクが表示されます。 場合によっては、一度最新の情報に更新する必要があります。 更新プログラムのコンプライアンスの詳細についてはこちらを参照してください。
グループ名を選択してターゲット グループを選択します。 [グループの基本] の下にグループの詳細が表示されます。
デプロイを開始するには、[現在のデプロイ] タブに移動します。[使用できる更新プログラム] セクションで、目的の更新プログラムの横にある[デプロイ] リンクを選択します。 特定のグループに最適な使用可能な更新プログラムには、最適 の強調表示が付けられます。
デプロイを直ちに開始するか、後で開始するようにスケジュールします。 [作成] を選択します。
デプロイの詳細 で、状態 が アクティブ に変わります。 デプロイされた更新プログラムには (デプロイ中) のマークが付きます。
コンプライアンス チャートを表示して、更新が進行中であることを確認します。
デバイスが正常に更新されると、コンプライアンス チャートとデプロイの詳細が、同じ内容を反映するように更新されていることがわかります。
更新プログラムのデプロイを監視する
これで、Device Update for IoT Hub と Ubuntu (18.04 x64) Simulator Reference Agent を使用した、エンドツーエンドのイメージの更新が正常に完了しました。
リソースをクリーンアップする
不要になったら、Device Update アカウント、インスタンス、IoT ハブ、IoT デバイスをクリーンアップします。