この記事はisaaxを使ってIoT開発をするためのシリーズ記事の第3回です。併せて第1回「isaaxではじめるIoTの第一歩!」、第2回「isaaxのユーザ環境変数を使いこなそう」も御覧ください。

IoTプロジェクトを本格的に立ち上げていく中で、IoTデバイスへのソフトウェアのインストールや設定は不可欠であるにもかかわらず煩雑な作業です。同じようなスクリプトを毎回実行したり、アプリケーションを最新版に差し替えた際に過去のバージョンとのマイグレーションが必要になることもあります。

こうした実運用時に必要となる機能もisaaxには組み込まれています。今回は各ライフサイクルに合わせたシェルスクリプト機能(以下スクリプト機能)をご紹介します。

 

ライフサイクルとは?

isaaxのライフサイクルとはIoTデバイスのセットアップからアプリケーションのインストール、そしてプロジェクトの停止に至るまでのステップを意味します。主に以下のステップがあります。

  1. デバイスのセットアップ
  2. アプリケーションのインストールと実行
  3. アプリケーションの更新
  4. アプリケーションの削除

デバイスのセットアップ

これはOSなどのセットアップに加え、isaaxdのインストールが該当します。詳しくはisaax Documentation | isaaxにデバイスを登録するをご覧ください。

 

アプリケーションのインストールと実行

isaaxdがセットアップされていれば、Gitリポジトリにある内容を自動的に取得してデプロイ、アプリケーションが実行されます。このタイミングで実行されるスクリプトが pre-install です。主にライブラリやプログラミング言語のインストール、アプリケーションを実行する際に必要な環境をセットアップするのに向いています。

アプリケーションの更新

isaaxではGitリポジトリにプッシュすることで自動的に更新が行われます。IoTデバイス側で何か処理を行う必要はありません。

このタイミングで実行されるスクリプトが pre-update と post-update です。pre-updateはアプリケーション更新前、post-updateは更新後に実行されるスクリプトです。更新に伴うマイグレーションを実行したり、システムチェックを行うこともできるでしょう。

アプリケーションの削除

アプリケーションの削除はSSHで各デバイスにログインして行う必要があります。まずisaaxdを停止させます。

$ sudo /var/isaax/isaaxd stop

さらにremoveでアプリケーションを削除できます。

$ sudo /var/isaax/isaaxd remove

スクリプトについて

では上記説明のなかで何回か出てきたスクリプトについて紹介します。スクリプトはアプリケーションのライフサイクルの中で実行できます。シェルスクリプトなので、コマンドをそのまま実行するイメージです。

シェルスクリプトはクラスター単位で設定します。まずクラスターの画面でクラスター設定ボタンを押します。

 

出力された設定で、スクリプトを選択します。現在3つのスクリプトが用意されています。

  • pre-install
  • アプリケーションインストール時に実行
  • pre-update
  • アプリケーション更新前に実行
  • post-update
  • アプリケーション更新後に実行

編集用の鉛筆アイコンをクリックするとモーダルダイアログが表示されます。

ここで設定できるのはスクリプト自体の内容に加えて、タイムアウトと実行ユーザを指定できます。長いスクリプト(ライブラリの更新など)が伴う場合にはタイムアウトを長くすると良いでしょう。また、デフォルトではrootユーザで実行しますが、セキュリティやシステムを破壊する可能性がある場合には安全性を考慮しユーザを変更する方が良いでしょう。

 

試す

では実際に試してみましょう。例えばアプリケーション更新前 pre-update で、 Node.jsライブラリをインストールするという処理を追加してみます。筆者の環境ではnodebrewを使っているため、次のようにコマンドを追加します。

# export PATH=$PATH:/home/pi/.nodebrew/current/bin を事前に実行した場合は
# npm i
# になります
/home/pi/.nodebrew/current/bin/node /home/pi/.nodebrew/current/bin/npm i

この時の注意点として、Raspberry Piなどのマイコンでは実行速度が遅かったり、IoTの特性としてネットワークが弱いことがあります。そのため、タイムアウトがデフォルトの30秒では短い可能性があります。その場合は60秒にするなど、適切に調整する必要があります。

アプリケーションを更新してGitリポジトリでプッシュすると、 node_modules というディレクトリができているのが確認できます。こうすることでGitリポジトリには不要なファイルを追加せずに済んだり、各アーキテクチャに依存するライブラリなどもインストールできます。コマンドを駆使すれば何でもできるでしょう。

 

まとめ

スクリプト機能を使うことで後からデバイスのプログラミング言語をバージョンアップしたり、セキュリティパッチに対応させることもできます。アプリケーションとは異なる処理を自動実行させるのに便利です。皆さんのIoTプロジェクト開発で役立ててください。

isaax IoT

初めてisaaxを使う方はこちらも合わせて確認しよう!


Leave a Reply

Your email address will not be published. Required fields are marked *