プラグインのディレクトリ配置と起動パラメータの関係を教えてください。


プラグインは起動パラメータ--plugins_base_dirsで指定された「プラグイン基底ディレクトリ」と呼ばれるディレクトリを基準に特定の構成で配置されたプラグインを読み込みます。

Note

インストールは以下のタイミングで行われます。
・Scenarioサーバの起動時(起動パラメータ--plugins_auto_installが有効な場合)
・プラグインアップグレードのAPI呼び出しを行った時
インストール対象のプラグインは起動オプションに従いAPIGWを介して各サーバにインストールされます。


プラグイン基底ディレクトリ

プラグインを読み込む際に基準となるディレクトリです。
起動オプションの--plugins_base_dirsで指定し、指定したディレクトリを基準にそれぞれのディレクトリ、ファイルをプラグインディレクトリプラグインサービスディレクトリプラグイン定義ファイルとして読み込みます。
Qmonus SDKから読み書き可能なディレクトリパスであればどこでも可です。カンマ区切りで複数のディレクトリパスを指定することもできます。


プラグインディレクトリ

プラグイン基底ディレクトリの直下に配置するディレクトリです。ユーザが自由に名前を決定することができ、ワークスペースとして扱うこともできます。
例として用途の違う a_plugin, b_plugin と2つのプラグインを管理する場合、このプラグインディレクトリ単位で分割することが可能です。

Note

ワークスペースとして扱われる条件
以下の2つの条件を満たしている場合、プラグインディレクトリをワークスペースとして認識します。
・ github連携モードではない場合
--developer_modeがTrueの場合

Tip

プラグインディレクトリは、起動オプションの--pluginsで指定することもできます。カンマ区切りでの複数指定や、--plugins=*のようにワイルドカード指定でプラグイン基底ディレクトリ配下のプラグインディレクトリを全てロード対象にする指定が可能です。
ワイルドカード*を指定した場合は、全て読み込み対象となりますが、一部のプラグインディレクトリを無視したい場合は、--ignore_pluginsで無視するディレクトリを指定することもできます。
同階層に、buildexamfrontalなどプラグイン以外のアセットが格納されている場合、--ignore_plugins=build,exam,frontalとすることで除外できます。


プラグインサービスディレクトリ

プラグインディレクトリの直下に配置するディレクトリです。プラグインとQmonus SDKの各種メタマイクロサービスを紐づけます。
ディレクトリ名はメタマイクロサービスの名称で予約されており、プラグインが格納されているディレクトリとして認識されるのは、以下の名称のディレクトリのみとなります。

サーバ プラグインサービスディレクトリ
APIGW roles accounts parametermappers routings
Transaction counters aborthooks exclusives transactionquotas ipam
Scenario formats jsonschemas configs variablegroups modules functions toyblocks templates scenarios modelschemas closedloopcomponents closedlooptypes daemons classes dags aliases protobufs grpcservicers followers jobs fakers illusions testcases testsuites
Schedule outgoingwebhooks
Lambda cliproxy netconfproxy devices deviceroles lambdafunctions
Collector collectionpatterns collectionhooks collections
Reflector reflections workers


プラグイン定義ファイル

プラグインの定義ファイルです。拡張子.yml.yaml.jsonのファイルをプラグインとして認識します。

例えば、HelloWold.ymlというScenarioリソースを作成する場合、以下のようなプラグイン配置となります。

プラグイン基底ディレクトリ/プラグインディレクトリ/scenarios/HelloWold.yml


ディレクトリ配置と起動パラメータの関係

例として以下のようなディレクトリ配置の場合を想定します。

  • 例① :
    起動パラメータ: --plugins_base_dirs=/usr/local/qmonus --plugins=a_plugins
    インストール対象プラグイン: h i j k

  • 例② :
    起動パラメータ: --plugins_base_dirs=/usr/local/qmonus --plugins=a_plugins,b_plugins
    インストール対象プラグイン: h i j k l

  • 例③ :
    起動パラメータ: --plugins_base_dirs=/usr/local/qmonus --plugins=*
    インストール対象プラグイン: h i j k l d
    ※ もしd配下にプラグインサービスディレクトリに該当する名称のディレクトリが存在し、その配下に.ymlが配置されているとインストール対象として認識されます。ファイルの中身がプラグインとして不正なためインストールには失敗する可能性があります。このような状況が想定される場合は、例④ のように--ignore_pluginsを指定してください。

  • 例④ :
    起動パラメータ: --plugins_base_dirs=/usr/local/qmonus --plugins=* --ignore_plugins=frontal_plugins
    インストール対象プラグイン: h i j k l