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 Identity Service デーモンに依存します。
このチュートリアルでは説明しませんが、 IoT Identity Service デーモンは Linux ベースの IoT デバイスにスタンドアロンでインストールできます。 インストールの順序が重要です。 Device Update パッケージ エージェントは、IoT Identity Service の 後 にインストールする必要があります。 それ以外の場合、パッケージ エージェントは、IoT Hub への接続を確立するための承認されたコンポーネントとして登録されません。
次に、Device Update エージェント.deb パッケージをインストールします。
sudo apt-get install deviceupdate-agent deliveryoptimization-plugin-apt
次のコマンドを実行して、IoT デバイスのモジュール (または Device Update を使用してデバイスをプロビジョニングした方法に応じてデバイス) のプライマリ接続文字列を構成ファイルに入力します。
sudo nano /etc/adu/du-config.json
シミュレーターとして実行するようにエージェントを設定します。 Device Update エージェントがシミュレーター ハンドラーを呼び出して APT ('microsoft/apt:1') でパッケージの更新を処理するように、IoT デバイスで次のコマンドを実行します。
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
Azure IoT Hub ソフトウェアの Device Update には、次のライセンス条項が適用されます。
エージェントを使用する前に、ライセンス条項をお読みください。 インストールと使用は、これらの条件に同意したものになります。 ライセンス条項に同意しない場合は、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 値に設定して削除します。 デバイス更新エージェントでデバイス 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 ハブに移動します。 左側のウィンドウの [ 自動デバイス管理] で、[ 更新プログラム] を選択します。
[ 更新] タブを選択します。
[ + 新しい更新プログラムのインポート] を選択します。
[+ ストレージ コンテナーから選択] を選択します。 既存のアカウントを選択するか、 + ストレージ アカウントを使用して新しいアカウントを作成します。 次に、既存のコンテナーを選択するか、 + コンテナーを使用して新しいコンテナーを作成します。 このコンテナーは、インポート用に更新ファイルをステージするために使用されます。
注
以前の更新プログラムから誤ってファイルをインポートしないように、更新プログラムをインポートするごとに新しいコンテナーを使用することをお勧めします。 新しいコンテナーを使用しない場合は、この手順を実行する前に、既存のコンテナーからファイルを削除してください。
コンテナーで [ アップロード ] を選択し、手順 1 でダウンロードしたファイルに移動します。 すべての更新ファイルを選択したら、[ アップロード] を選択します。 次に、[ 選択 ] ボタンを選択して [ 更新プログラムのインポート ] ページに戻ります。
このスクリーンショットは、インポートの手順を示しています。 ファイル名は、例で使用されているものと一致しない場合があります。
[ 更新プログラムのインポート ] ページで、インポートするファイルを確認します。 次に、[ 更新プログラムのインポート] を選択してインポート プロセスを開始します。
インポート プロセスが開始され、画面が [ インポート履歴 ] セクションに切り替わります。 [状態] 列にインポートが成功したことが示されたら、[利用可能な更新プログラム] ヘッダーを選択します。 インポートされた更新プログラムが一覧に表示されるはずです。
更新プログラムをインポートする方法の詳細を確認します。
更新グループの作成
ページの上部にある [グループとデプロイ ] タブに移動します。
[ グループの追加] を選択して新しいグループを作成します。
一覧から IoT Hub タグと デバイス クラス を選択します。 次に、[ グループの作成] を選択します。
グループが作成されると、更新プログラムのコンプライアンス チャートとグループの一覧が更新されます。 更新プログラムのコンプライアンス チャートには、コンプライアンスのさまざまな状態のデバイスの数が表示されます。 最新の更新プログラム、 利用可能な新しい更新プログラム、 進行中の更新プログラムです。 更新プログラムのコンプライアンスについて説明します。
新しく作成されたグループと、新しいグループ内のデバイスで利用可能な更新プログラムが表示されます。 グループのデバイス クラスの要件を満たしていないデバイスがある場合は、対応する無効なグループに表示されます。 このビューから新しいユーザー定義グループに最適な更新プログラムをデプロイするには、グループの横にある [デプロイ ] を選択します。
タグを追加し、更新グループを作成する方法について説明します。
更新プログラムをデプロイする
グループが作成されると、デバイス グループで使用できる新しい更新プログラムが表示されます。 更新プログラムへのリンクは、[ ベスト 更新プログラム] の下にある必要があります。 場合によっては、一度最新の情報に更新する必要があります。 更新プログラムのコンプライアンスについて詳しくは、こちらをご覧ください。
グループ名を選択してターゲット グループを選択します。 グループの基本の中のグループの詳細に移動されます。
デプロイを開始するには、[現在のデプロイ] タブに移動します。[利用可能な更新プログラム] セクションから、目的の更新プログラムの横にあるデプロイ リンクを選択します。 特定のグループに対して利用可能な最適な更新プログラムは、 最適 な強調表示で示されます。
デプロイを直ちに開始するか、後で開始するようにスケジュールします。 次に、[ 作成] を選択します。
[ デプロイの詳細] で、[ 状態] が [アクティブ] に変わります。 デプロイされた更新プログラムは 、 (デプロイ中) でマークされます。
コンプライアンス チャートを表示して、更新が進行中であることを確認します。
デバイスが正常に更新されると、コンプライアンス チャートとデプロイの詳細が、同じ内容を反映するように更新されていることがわかります。
更新プログラムのデプロイを監視する
これで、Device Update for IoT Hub と Ubuntu (18.04 x64) Simulator Reference Agent を使用した、エンドツーエンドのイメージの更新が正常に完了しました。
リソースをクリーンアップする
不要になったら、Device Update アカウント、インスタンス、IoT ハブ、IoT デバイスをクリーンアップします。