産業現場には、収集スクリプト、プロトコル変換デーモン、サードパーティーのバイナリなど、従来の方式で動作するプログラムが数多くあります。以前は個別に手動起動し、障害に気付けないこともありました。JelinaOS はこれらを **ProgramSet(プログラムセット)**という統一された宣言的管理体系に組み込み、設定による管理、異常時の自己復旧、システム起動時の自動起動を実現します。
ProgramSet とは
Section titled “ProgramSet とは”ProgramSet は非コンテナアプリケーションの集合です。各アプリケーションは、次の内容を宣言的な設定で記述します。
- 起動方法:コマンド、作業ディレクトリ、実行ユーザー。
- プログラムの取得元:リリース設定に記載したダウンロード先からパッケージを取得。
- 動作ポリシー:再起動ポリシー、環境変数、停止シグナル。
- 依存関係:起動順序、排他関係、必須・任意の依存。
- 稼働保護:再起動制限、終了後の状態維持、実行前後のコマンド。
設定後はシステムが一元管理するため、起動スクリプトを手動で作成する必要はありません。
ProgramSet はクラウドまたはローカル管理インターフェースで設定し、デバイスエージェントが実行します。
| 設定方法 | 用途 | 説明 |
|---|---|---|
| クラウドのリリース(推奨) | JelinaCloud に接続する環境 | Release 作成時に ProgramSet を宣言し、リリースとともにデバイスへ一括配信 |
| ローカル管理インターフェース | ローカル/分離環境 | デバイスのローカルインターフェースから目標設定を送信 |
クイックスタート
Section titled “クイックスタート”以下はクラウドのリリースにおける ProgramSet の宣言例です。パッケージはダウンロード先から配信します。
programs: collector: uri: http://files.example.com/collector/collector.tar.gz # プログラムパッケージのダウンロード URL command: collector --config /data/collector.conf running: true restart: always environment: SITE_ID: plant-01 working_directory: /opt/collector user: rootcommand:起動コマンド。必須です。running:実行するかどうか。デフォルトはtrue。restart:再起動ポリシー。alwaysは異常終了後の自動再起動を意味します。environment:環境変数。working_directory:作業ディレクトリ。
| 設定 | 説明 |
|---|---|
uri |
プログラムパッケージのダウンロード先 |
command |
起動コマンド(必須) |
running |
実行するかどうか。デフォルトは true |
restart |
再起動ポリシー:no / on-failure / always など |
environment |
環境変数 |
working_directory |
作業ディレクトリ |
user / group |
実行ユーザー/グループ |
after / before、wants / requires、conflicts |
依存関係と順序 |
start_limit_*、remain_after_exit、exec_start_* など |
稼働保護と復旧動作 |
全フィールドは docker-compose の互換性と拡張を参照してください。
高度な設定:自動起動と条件確認
Section titled “高度な設定:自動起動と条件確認”programs: myapp: command: run.sh restart: always Install: WantedBy: multi-user.target # 起動時に自動実行 Unit: ConditionPathExists: /data/app/config.json # 条件確認:設定ファイルが存在する場合にのみ起動ProgramSet のアプリケーションはエージェントが一元管理し、システムサービスとして実行します。確認や操作に使用するサービス名は、システムの命名規則に従います。実際の名前はデバイス状態コマンドで確認できます。
systemctl status <プログラムのサービス名> # 状態を確認(サービス名はデバイス上の表示に従う)systemctl restart <プログラムのサービス名> # 再起動systemctl stop <プログラムのサービス名> # 停止- 従来の産業用プログラム:収集、制御、通信デーモンの管理を近代化。
- スクリプトとツールチェーン:一時的なスクリプトを正式な管理下に置き、異常時に自己復旧。
- 混在構成:コンテナと同じオーケストレーション体系で連携。
コンテナアプリケーションとの使い分け
Section titled “コンテナアプリケーションとの使い分け”| 要件 | 推奨 |
|---|---|
| ハードウェアへの直接アクセス、高いリアルタイム性 | ネイティブアプリケーション(ProgramSet) |
| 既存プログラムを活用し、移行コストを抑えたい | ネイティブアプリケーション(ProgramSet) |
| 複数言語・多数の依存要素があり、環境分離が必要 | コンテナアプリケーション |
| 最新のマイクロサービス構成、迅速な反復開発 | コンテナアプリケーション |