アーティファクトの作成
measurementプロジェクトのアプリケーション開発における、アーティファクトの作成について説明します。
アプリケーションアップデートアーティファクトを作成し、Menderサーバーにアップロードしてリリースとして管理します。
measurementプロジェクトのアプリケーションアップデートアーティファクトには、以下のファイルが必要です。
- デバイスコネクターサービスファイル
作成したDockerイメージを利用して計測を行うためのデバイスコネクターサービスファイルです。 デバイスコネクターサービスファイルの作成 で作成したファイルを利用します。
- Dockerイメージのアーカイブ (プライベートリポジトリ利用時のみ)
プライベートリポジトリを利用する場合は、作成したDockerイメージのアーカイブファイルをデプロイします。 アーカイブの作成 (プライベートリポジトリ利用時のみ) で作成したファイルを利用します。 アーカイブは、 イメージの取得 の docker-archive-loadによりロードされます。
セキュリティの観点から、本番環境のエッジコンピューターにはプライベートリポジトリの認証情報をデプロイすることは避けてください。
アーティファクトの作成
作成したDockerイメージを利用して計測をするためのアプリケーションアップデートアーティファクトを作成する方法を説明します。
開発用PCで、アプリケーションアップデートアーティファクトを作成するためのテンプレートプロジェクトを取得します。
$ git clone https://github.com/aptpod/terminal-system-artifacts
generate.sh
を実行して、空のアーティファクトsample_1.0.0.mender
が生成できることを確認します。$ cd custom-template $ ./generate.sh ...omitted... Artifact "./sample_1.0.0.mender" generated successfully
アップデートに利用するファイルを、テンプレートプロジェクトの
custom/contents
ディレクトリに格納します。前章で作成したデバイスコネクターサービスファイルを格納します。 プライベートリポジトリを利用する場合は、Dockerイメージのアーカイブも格納します。
例:
Custom Text
デバイスコネクターサービスファイル およびアーカイブを格納custom/contents/Custom\ Text.yml custom/contents/docker_image_archive.tar.gz
アップデートの処理を行うスクリプト
custom/custom_script.sh
を変更します。アーティファクトのインストール時に呼び出される関数
custom_artifact_install
に、アップデート処理を追記します。function custom_artifact_install() { # Custom install process # Contents are located in $CUSTOM_CONTENTS_DIR # install "Custom Text" device connector service cp -f $CUSTOM_CONTENTS_DIR/Custom\ Text.yml /var/lib/core/docker-compose/measurement/services/ # install docker image archive cp -f $CUSTOM_CONTENTS_DIR/docker_image_archive.tar.gz /var/lib/docker-archive-load/ /usr/bin/docker-archive-load.sh }
カスタム開発で追加するデバイスコネクターサービスファイルは、
/var/lib/core/docker-compose/measurement/services
にインストールします。 Dockerイメージのアーカイブファイルは、/var/lib/docker-archive-load
にインストールします。 アーカイブファイルを格納後、/usr/bin/docker-archive-load.sh
を実行し、アーカイブファイルからDockerイメージを読み込みます。注釈
イメージの削除 の
prune_unused_tag
設定が有効な場合、古いDockerイメージは自動削除されます。注釈
アーティファクトカスタマイズの詳細については、 Mender Docs の Artifact creation を参照してください。
アーティファクトの情報
config.sh
を変更します。以下の4つの変数の内容を例のように書き換えて下さい。
注意
ARTIFACT_NAME
には、Menderサーバーにアップロードされているアーティファクト名を設定しないでください。 Menderサーバーにアップロードされているアーティファクトは、Mender Web UIの[RELEASES]で確認することができます。例:
ARTIFACT_NAME="custom-text" DEVICE_TYPES=("edgeplant-t1") ARTIFACT_VERSION="1.0.0" SOFTWARE_FILESYSTEM="data-partition"
ARTIFACT_NAME
アーティファクトの名前DEVICE_TYPES
アーティファクトがサポートするデバイスタイプ(複数指定可能)ARTIFACT_VERSION
アーティファクトのバージョンSOFTWARE_FILESYSTEM
インストール先のファイルシステム
注釈
データ保持 の対象ディレクトリにファイルをインストールする場合、
SOFTWARE_FILESYSTEM
にはdata-partition
を指定してください。 OSアップデート時にソフトウェアバージョンのインベントリ情報が保持されます。バージョン管理の詳細については、 バージョン管理 を参照してください。注釈
ソフトウェアのバージョン管理が不要な場合は、
ARTIFACT_VERSION
に空文字を設定してください。 空文字を設定することで、[Software]タブに表示されるアーティファクトのバージョン情報を削除することができます。generate.sh
を実行して、カスタマイズしたアーティファクトcustom-text_1.0.0.mender
を生成します。$ ./generate.sh ...omitted... Artifact "./custom-text_1.0.0.mender" generated successfully
アプリケーションアップデートアーティファクトを生成することができました。
リリースの作成とデプロイ
Menderサーバーにアーティファクトをアップロードし、リリースを作成します。
Mender Web UIにアクセスし、[RELEASES] > [UPLOAD]からアーティファクトをアップロードします。
リリースのリストに
custom-text_1.0.0
が新しく追加されていることを確認します。
注釈
mender-cli
を利用してコマンドラインからアーティファクトをアップロードすることも可能です。
詳細は、 Mender docs を参照してください。
作成したリリースをエッジコンピューターにデプロイします。
Mender Web UIの[DEVICES]をクリックし、リリースをデプロイしたいデバイスをクリックして、デバイス画面を表示します。
デバイス画面右下の
Device actions
をマウスオーバーし、[Create deployment for this device]をクリックします。[Select a Release to deploy]のプルダウンメニューから、リリース
custom-text_1.0.0
を選択します。[CREATE DEPLOYMENT]をクリックします。
自動的に、デプロイメントリスト画面に遷移します。
[View details]をクリックしてデプロイメント詳細画面を表示し、デプロイメントが成功していることを確認します。
デバイス画面の[Software]タブを表示し、作成したアプリケーションアップデートアーティファクトがインストールされていることを確認します。
計測の動作確認
追加したDockerイメージおよびデバイスコネクターサービスを使って計測を行います。
事前に、エッジコンピューターで以下の設定が済んでいることを確認してください。
intdashサーバー接続設定
アップストリーム設定
デバイスコネクターIPC設定で、
custom
設定を追加します。Mender Web UIにアクセスし、デバイス画面の[Configuration]タブで、
agent.device_connectors_upstream
に以下を設定してください。例:
[ { "id": "device-inventory", "data_name_prefix": "v1/255/", "dest_ids": [ "default-upstream" ], "format": "iscp-v2-compat" }, { "id": "custom", "data_name_prefix": "v1/3/", "dest_ids": [ "default-upstream" ], "format": "iscp-v2-compat" } ]
デバイスコネクター設定で、デバイスコネクターサービス
Custom Text
を利用する設定を追加します。Mender Web UIにアクセスし、デバイス画面の[Configuration]タブで、
device_connectors
に以下を設定してください。例:
[ { "id": "device-inventory", "upstream_ipc_ids": [ "device-inventory" ], "downstream_ipc_ids": [], "service_id": "Device Inventory", "service_substitutions": [] }, { "id": "custom", "upstream_ipc_ids": [ "custom" ], "downstream_ipc_ids": [], "service_id": "Custom Text", "service_substitutions": [ "DC_TEXT=Custom Text" ] } ]
設定をエッジコンピューターに適用し、計測を開始します。
計測を開始し、新しく追加したデバイスコネクターサービスで計測ができることを確認します。
Edge Finderで、デバイスコネクター設定の
DC_TEXT
で指定した文字列が送信されることを確認します。カスタムインベントリが、intdashサーバーおよびMenderサーバーに送信されることを確認します。
アプリケーションアップデートアーティファクトを利用して開発したDockerイメージを利用して計測することができました。
動作確認後、計測を停止します。
動作確認のためにMenderサーバーにアップロードしたアーティファクトは、以降の操作に必要ないため削除してください。
Mender Web UIの[RELEASES]でアップロードしたアーティファクトのリリースをクリックし、 [Release actions] > [Delete release]でリリースを削除してください。
以上で、measurementプロジェクトのアプリケーション開発は完了です。