Menderで始める組み込みOTA 第5回 : Quickstart Part4 : アプリケーションを更新(その2)
MenderはオープンソースベースのLinux向けOTA(Over the Air Update)ソリューションです。
筆者の会社コードギアではこのたびご縁あってMenderの技術サポートを提供する機会を得ました。
この一連の記事ではMender OTAソリューションの技術的な側面を紹介します。
「Menderで始める組み込みOTA」記事インデックス
- 第0回 : 組み込み製品、IoTシステムに適したOTAとは?
- 第1回 : Menderのご紹介
- 第2回 : Quickstart Part1 : mender.ioの試用アカウントを取得
- 第3回 : Quickstart Part2 : Raspberry Pi 3/4を接続
- 第4回 : Quickstart Part3 : アプリケーションを更新(その1)
- 第5回 : Quickstart Part4 : アプリケーションを更新(その2) (本記事)
- 第6回 : Quickstart Part5 : OSアップデートを実行
- 第7回 : Quickstart Part6 : コンテナアップデートを実行
- 第8回 : Quickstart Part7 : リモートターミナル機能のご紹介
- 第9回 : 接続編1 : QEMUエミュレータを接続
- 第10回 : 接続編2 : Armadillo IoT G3を接続
はじめに
今回は自分でアップデートファイル (ARTIFACT)を作成し、SaaSの mender.io に接続中のRaspberry Pi 3/4 デバイスに対して配布します。
基本的な流れは docs.mender.io にある Deploy an application update の後半部、「Step 2 - Modify the application」の内容と同じです。
本来、ARTIFACTはオフラインツール mender-artifact を利用してPC上で作成しますが、例外としてmenderのWebUIで1ファイルのみ登録した際に自動的にARTIFACT形式に変換して登録する機能があります。今回は前回OTA実行したARTIFACTに含まれているうちの1ファイル index.html をさらに更新するシナリオでOTA実行します。
前回作成したDEPLOYMENTのキャンセル
WebUIにログイン後、DEPLOYMENTS画面の「ACTIVE」 に前回作成したDEPLOYMENT (アップデートジョブ)が進行中で残っている場合、これを実行キャンセル(abort)するために右のバツ印をクリックします。
確認の表示が出るので、緑のチェックボタンを押してabortを完了します。これにより、前回実施したDEPLOYMENTはFinished項目に移動します。既に終了済みの場合は何も行う必要はありません。
更新対象の index.html を作成
前回のARTIFACTに含まれていた index.html の内容を更新するために、新規に更新対象になる index.html をローカルPC上で作成します。PC上の任意のディレクトリに index.html というファイルを作成し、以下の内容を保存します。(あるいはもっと本格的な内容でもかまいません)
Hello World!
新規ARTIFACT(アップデートファイル)を登録
WebUIのRELEASES画面に移動します。すると下の方に UPLOAD というボタンがあるので、これを押します。
Upload an Artifact ダイアログの「Drag hear or browse to upload an Artifact file」と書いてある領域に、先ほど作成した index.html をExplorerからドラッグするか、ここをクリックして開くオープンダイアログで index.html を選択後 NEXT ボタンを押して登録します。ここは本来オフラインツールで作成済の ARTIFACTファイルを登録するダイアログですが、単一ファイルを指定するとアップロード時に自動的にARTIFACTファイルに変換されてから登録されます。
ここで展開先のディレクトリを以下のように /var/www/localhost/htdocs に設定したあと NEXT ボタンを押します。これはWebサーバーのコンテンツが保存されているディレクトリです。
Deploy対象のDevice TypeとARTIFACT名を指定します。ここではDevice Typeに Raspberrypi3
RaspberryPi4
を両方設定し、ARTIFACT名には mender-demo-artifact2
を指定しています。(既に存在しているものと同じARTIFACT名は使用できません)
UPLOAD ボタンを押すと以下のように Type が single-file の ARTIFACT が登録されました。
新しいDEPLOYMENT (アップデートジョブ)を作成し、OTA実行
RELEASES画面で、今回登録したmender-demo-artifact2
を選択後、表示される CREATE DEPLOYMENT WITH THIS RELEASE ボタンを押して新しいアップデートジョブを作成します。
これ以降の手順は前回の記事と同一です。
- Select device group : All devices を選択
- Select a start time : Start Immediately を選択
- Select a rollout pattern : Single phase : 100% を選択
- Set update process options : 何も変更せず NEXT を押す
最後の画面で CREATE ボタンを押すとDEPLOYMENTが作成され、(ポーリング間隔設定が30秒のままの場合) 数分以内に接続してきたデバイスに対してOTAが実行されます。
アップデートジョブの結果を確認
アップデートが実行されると、対象のRaspberry PiのIPアドレスではWebサーバーのコンテンツが更新されたはずです。Webブラウザで http://<ターゲットのIPアドレス>:85/ (ポート85)を開くと、以下のようにコンテンツが更新されていることを確認できます。
アップデートログを確認
ちなみに、DEPLOYMENTS画面の RELEASE 行にある VIEW DETAILS ボタンを押すとOTA実行が完了したデバイスが表示されます。もし何かエラーが報告された場合にもこの画面に表示されます。
この記事のまとめ
単一ファイルのアップデートを行うARTIFACTファイルとDEPLOYMENTジョブを作成し、OTAを実行しました。これにより、Webアプリケーションが更新できました。
今後の予定
コードギアでは 「Menderで始める組み込みOTA」 のタイトルで以下のZenn記事を公開しています。
- 第0回 : 組み込み製品、IoTシステムに適したOTAとは?
- 第1回 : Menderのご紹介
- 第2回 : Quickstart Part1 : mender.ioの試用アカウントを取得
- 第3回 : Quickstart Part2 : Raspberry Pi 3/4を接続
- 第4回 : Quickstart Part3 : アプリケーションを更新(その1)
- 第5回 : Quickstart Part4 : アプリケーションを更新(その2) (本記事)
- 第6回 : Quickstart Part5 : OSアップデートを実行
- 第7回 : Quickstart Part6 : コンテナアップデートを実行
- 第8回 : Quickstart Part7 : リモートターミナル機能のご紹介
- 第9回 : 接続編1 : QEMUエミュレータを接続
- 第10回 : 接続編2 : Armadillo IoT G3を接続
- 第11回 : 接続編3 : Jetson AGX Orinを接続
これ以降の記事も準備中です。ご期待ください。
Discussion