アーティファクトの作成

measurementプロジェクトのアプリケーション開発における、アーティファクトの作成について説明します。

../../../_images/develop_application_measurement_project_overview_artifact.png

図 29 本章での説明部分(黄色枠)

アプリケーションアップデートアーティファクトを作成し、Menderサーバーにアップロードしてリリースとして管理します。

measurementプロジェクトのアプリケーションアップデートアーティファクトには、以下のファイルが必要です。

デバイスコネクターサービスファイル

作成したDockerイメージを利用して計測を行うためのデバイスコネクターサービスファイルです。 デバイスコネクターサービスファイルの作成 で作成したファイルを利用します。

Dockerイメージのアーカイブ (プライベートリポジトリ利用時のみ)

プライベートリポジトリを利用する場合は、作成したDockerイメージのアーカイブファイルをデプロイします。 アーカイブの作成 (プライベートリポジトリ利用時のみ) で作成したファイルを利用します。 アーカイブは、 イメージの取得 の docker-archive-loadによりロードされます。

セキュリティの観点から、本番環境のエッジコンピューターにはプライベートリポジトリの認証情報をデプロイすることは避けてください。

アーティファクトの作成

作成したDockerイメージを利用して計測をするためのアプリケーションアップデートアーティファクトを作成する方法を説明します。

  1. 開発用PCで、アプリケーションアップデートアーティファクトを作成するためのテンプレートプロジェクトを取得します。

    $ git clone https://github.com/aptpod/terminal-system-artifacts
    
  2. generate.sh を実行して、空のアーティファクト sample_1.0.0.mender が生成できることを確認します。

    $ cd custom-template
    $ ./generate.sh
    ...omitted...
    Artifact "./sample_1.0.0.mender" generated successfully
    
  3. アップデートに利用するファイルを、テンプレートプロジェクトの custom/contents ディレクトリに格納します。

    前章で作成したデバイスコネクターサービスファイルを格納します。 プライベートリポジトリを利用する場合は、Dockerイメージのアーカイブも格納します。

    例:

    Custom Text デバイスコネクターサービスファイル およびアーカイブを格納

    custom/contents/Custom\ Text.yml
    custom/contents/docker_image_archive.tar.gz
    
  4. アップデートの処理を行うスクリプト 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 を参照してください。

  5. アーティファクトの情報 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]タブに表示されるアーティファクトのバージョン情報を削除することができます。

  6. generate.sh を実行して、カスタマイズしたアーティファクト custom-text_1.0.0.mender を生成します。

    $ ./generate.sh
    ...omitted...
    Artifact "./custom-text_1.0.0.mender" generated successfully
    

アプリケーションアップデートアーティファクトを生成することができました。

リリースの作成とデプロイ

Menderサーバーにアーティファクトをアップロードし、リリースを作成します。

  1. Mender Web UIにアクセスし、[RELEASES] > [UPLOAD]からアーティファクトをアップロードします。

  2. リリースのリストに custom-text_1.0.0 が新しく追加されていることを確認します。

注釈

mender-cli を利用してコマンドラインからアーティファクトをアップロードすることも可能です。 詳細は、 Mender docs を参照してください。

作成したリリースをエッジコンピューターにデプロイします。

  1. Mender Web UIの[DEVICES]をクリックし、リリースをデプロイしたいデバイスをクリックして、デバイス画面を表示します。

  2. デバイス画面右下の Device actions をマウスオーバーし、[Create deployment for this device]をクリックします。

    ../../../_images/setup_mender_device_actions_menu.png

    図 30 Device actions

  3. [Select a Release to deploy]のプルダウンメニューから、リリース custom-text_1.0.0 を選択します。

  4. [CREATE DEPLOYMENT]をクリックします。

  5. 自動的に、デプロイメントリスト画面に遷移します。

    ../../../_images/setup_mender_deployments.png

    図 31 デプロイメントリスト画面

  6. [View details]をクリックしてデプロイメント詳細画面を表示し、デプロイメントが成功していることを確認します。

    ../../../_images/setup_mender_deployments_result_ok.png

    図 32 デプロイメント詳細画面

  7. デバイス画面の[Software]タブを表示し、作成したアプリケーションアップデートアーティファクトがインストールされていることを確認します。

    ../../../_images/mender_software_inventory_installed_custom_text.png

    図 33 [Software]タブ

計測の動作確認

追加したDockerイメージおよびデバイスコネクターサービスを使って計測を行います。

  1. 事前に、エッジコンピューターで以下の設定が済んでいることを確認してください。

    • intdashサーバー接続設定

    • アップストリーム設定

  2. デバイスコネクター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"
       }
    ]
    
  3. デバイスコネクター設定で、デバイスコネクターサービス 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"
          ]
       }
    ]
    
  4. 設定をエッジコンピューターに適用し、計測を開始します。

  5. 計測を開始し、新しく追加したデバイスコネクターサービスで計測ができることを確認します。

    Edge Finderで、デバイスコネクター設定の DC_TEXT で指定した文字列が送信されることを確認します。

    ../../../_images/edge_finder_custom_text.png

    カスタムインベントリが、intdashサーバーおよびMenderサーバーに送信されることを確認します。

    ../../../_images/viz_custom_inventory.png
    ../../../_images/mender_custom_inventory.png

    アプリケーションアップデートアーティファクトを利用して開発したDockerイメージを利用して計測することができました。

  6. 動作確認後、計測を停止します。

  7. 動作確認のためにMenderサーバーにアップロードしたアーティファクトは、以降の操作に必要ないため削除してください。

    Mender Web UIの[RELEASES]でアップロードしたアーティファクトのリリースをクリックし、 [Release actions] > [Delete release]でリリースを削除してください。

以上で、measurementプロジェクトのアプリケーション開発は完了です。