Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

サードパーティ製アプリケーションの構築

Junos OS Evolvedは、Junos OS Evolved向けJET SDKを使用してC、C++、Pythonで開発された署名付きサードパーティ製アプリケーションのパッケージをサポートします。Junos OS Evolvedアプリケーションマネージャー()またはLinuxシステムマネージャー(SysMansystemd)は、アプリケーションの性質と使用状況に基づいて、これらのサードパーティ製アプリケーションを制御します。

JET SDK for Junos OS Evolved(英語)

デバイスで実行するサードパーティアプリケーションを構築する前に、まず署名キーを生成して、アプリケーションに実行権限を付与する必要があります。詳細については、「 署名キーの生成 」を参照してください。

Junos OS Evolvedリリース22.4R1以降のバージョンでは、次のプラットフォームでJunos OS Evolved用のJET SDKがサポートされています。

シリーズ
表 1: JET SDK for Junos OS Evolved でサポートされているプラットフォーム
ACXPTXシリーズ QFXシリーズ
ACX7100-32C PTX10001-36MR QFX5130-32CD
ACX7100〜48リットル PTX10003 QFX5130-48C
ACX7509 PTX10004 QFX5220
  PTX10008  
  PTX10016  

JET SDKおよびJETツールキットのダウンロード

サードパーティ製アプリケーションの構築を開始する前に、JET SDK for Junos OS EvolvedとJET Toolkit for Junos OS Evolvedをダウンロードしてインストールします。これらのファイルは、 Juniper Extension Toolkit(Junos Evolved用) のページにあります。

  • Junos OS Evolved向けJET SDK: jet-junos-evo-sdk--releaseEVO.deb

  • Junos OS Evolved用JETツールキット: jet-junos-evo-toolkit--releaseEVO.tar.gz

Junos OS Evolved用JET SDKおよびJETツールキットのインストール

Junos OS Evolved用JETツールキットをダウンロードしたら、tarファイルを解凍し、パッケージからユーティリティを抽出し Jet-evo ます。

メモ:

Junos OS Evolvedリリース23.2R1以降以降では、バンドルISOを作成するためのユーティリティを抽出する Jet-evo-bundle-iso こともできます。バンドルされた ISO の詳細については、「 バンドルされた ISO の作成」を参照してください。

SDKをダウンロードしたら、インストールしてソースします。JET SDK for Junos OS Evolvedは、UbuntuやDebianなどのDebianベースのLinuxディストリビューションにインストールできるDebianパッケージです。次のLinuxコマンドを使用して、Junos OS Evolvedリリース22.4R1向けのJET SDKをインストールします。

user@host:~$ dpkg -i jet-junos-evo-sdk-22.4R1.10-EVO.deb

このコマンドは dpkg 、SDK を / opt/jnpr/sdk/3.0.2-31 フォルダーにインストールします。

次に、サードパーティ パッケージの SDK を調達する必要があります。以下のコマンドを使用して、Junos OS Evolvedリリース22.4R1のパッケージのJunos OS Evolved用JET SDKを入手します。

SysManおよびシステム制御アプリケーション

ネイティブのJunos OS Evolvedアプリケーションマネージャー()またはLinuxシステムマネージャー(SysMansystemd)は、サードパーティ製アプリケーションを制御できます。管理対象アプリケーションは、Junos OS Evolvedの分散型インフラストラクチャを利用して、複数のノードで実行できます。 SysMan一方、マネージド アプリケーションは 1 つのノードでしか実行できないためSysMan、ほとんどの場合、systemdアプリケーション マネージャーが優先されます。

SysMan マネージ アプリケーションは、 systemd サービス ファイルを通じてポリシーを定義するためにさまざまな方法を使用します。によって SysMan 管理されるアプリケーションは、ファイルを使用して .yaml ポリシーを定義し、サービスを割り当てます。詳細については、「 .yaml ファイル 」を参照してください。

によって systemd 管理されるアプリケーションは、ポリシーを定義し、ファイルを使用して .service サービスを割り当てます。詳細については、「 サービス ファイル 」を参照してください。

ルーティングエンジンのスイッチオーバーが発生すると、管理対象アプリケーションは新しいプライマリルーティングエンジンで自動的に起動しますがsystemdSysMan管理対象アプリケーションは元のルーティングエンジンで引き続き実行されます。可能な場合は、デュアルルーティングエンジンシステムで制御されたアプリケーションを使用することをお勧めしますSysMan

サードパーティ製アプリケーションのフォルダ構造

サードパーティ製アプリケーション パッケージは、Junos OS Evolved の特定のフォルダー構造に従います。

root-fs のフォルダ構造

このフォルダーには root-fs 、次のフォルダーが含まれています。

  • usr/sbin (必須): アプリケーションのバイナリ実行可能ファイルが含まれます。

  • usr/lib64 (オプション): アプリケーションに必要なライブラリーが入っています。

  • etc/sytemd/sytem (オプション): 管理対象アプリケーションのサービスユニットファイルsystemdが含まれますsystemd(管理対象アプリケーションでは必須systemd)。

  • usr/conf (オプション): ポリシー生成用のファイルが保存されています .yaml (マネージ アプリケーションでは必須 SysMan )。

フォルダーの外には、次のオプションのフォルダーがあります root-fs

  • スクリプト (オプション): プレインストール、インストール後、およびアンインストール前のスクリプトが含まれます。

  • etc/config (オプション): アプリケーション固有の構成が含まれます。

インストール後のフォルダ構造

サードパーティパッケージをインストールすると、デフォルトで次のパスにファイルが保存されます。

  • /usr/sbin/: パッケージ内のアプリケーションのバイナリ実行可能ファイルが含まれます。

  • /usr/lib64/: パッケージ内のアプリケーション用のライブラリが含まれます。

  • /data/var/external//current-evo-version: インストール前、インストール後、アンインストール前のスクリプト ファイルと、パッケージ内のアプリケーションの 、 、.bom.sh.fs.imaおよびファイルが含まれます。

  • /etc/systemd/system/: アプリケーション ポリシーとアタッチされたサービスを設定するためのファイルが保存されています.service

  • /usr/conf/: 制御対象アプリケーション用のSysManファイルが保存されています.yaml

メモ:

ライブラリとバイナリのファイルはフォルダにあります read-only 。ライブラリとバイナリ read-write を / etc/var のような有効なフォルダに置くことはお勧めしません。

サードパーティ製アプリケーションファイル

サードパーティのアプリケーションパッケージには、いくつかの種類のファイルが含まれています。さまざまなファイルタイプの詳細については、読み続けてください。

メイクファイル

メイクファイルは、サードパーティアプリケーションの構築とインストールに必要なファイルです。メイクファイルには、SRC ファイル、構成ファイル .yaml 、ファイルなどの他のファイルのパスを含める必要があります。また、必要なファイルのインストール場所も制御します。

SRC ファイル

SRCファイルには、アプリケーションのソースコードが含まれています。SRCファイルは、C、C ++、またはPythonで記述できます。これらのファイルは、サードパーティアプリケーションの機能に必要です。

スクリプト ファイル

スクリプト ファイルには、インストール前、インストール後、およびアンインストール前のスクリプトが含まれます。これらのオプション・ファイルは、アプリケーションのニーズに合わせてカスタマイズできるシェル・スクリプトです。

  • インストール前のスクリプトは、サードパーティパッケージをインストールする前に実行されます。これらのスクリプトは通常、デバイスのさまざまな要因をテストおよびチェックするために使用されます。例えば、インストール前のスクリプトを作成して、インストールを開始する前に、実行中のJunos OS Evolvedのバージョンを確認することができます。

  • インストール後のスクリプトは、サードパーティパッケージのインストール後に実行されます。これらのスクリプトには、インストールの完了後に実行するコマンドが含まれています。たとえば、追加のログ ファイルやパッケージのログ ディレクトリを作成します。

  • アンインストール前スクリプトは、サードパーティパッケージをアンインストールする前に実行されます。これらのスクリプトは通常、サードパーティパッケージのインストール中に作成されたフォルダーとファイルをクリーンアップするために使用されます。

メモ:

すべてのスクリプトは、正常に実行されると 0 を返し、失敗すると 0 以外を返す必要があります。

スクリプトは任意のフォルダに作成できます。ツールを使用した Jet-evo サードパーティのパッケージ作成プロセス中に、各タイプのスクリプトへのパスを入力すると、デバイスの/ data/var/external/current-evo-version/ フォルダーにインストールされます。このツールの詳細については Jet-evo 、「 Jet-evo ツールの構成」を参照してください。

メモ:

カスタム スクリプトを作成する場合は、追加の CLI 出力を作成するコマンドは使用 bash しないことをお勧めします。CLI出力を独自のログファイルにリダイレクトできます。

サービスファイル

サービスファイルは、管理対象アプリケーションに必須のファイル systemd です。これらのファイルは、アプリケーション ポリシーを制御し、アプリケーションが実行されるノードとルーティング エンジンを決定します。

サービスファイルは、パッケージのディレクトリの etc/ systemd/system/ フォルダ root-fs 内に配置する必要があります。

次の例は、 .service という名前の Sample Appアプリケーションのファイルです。この .service ファイルは、アプリケーションを起動するパスと、アプリケーションの実行に必要なシステム状態を定義します。

次のフィールドは必須であり、サンプル ファイルと同じ構文で使用する必要があります。

  • 以前は

  • 失敗時

  • 作業ディレクトリ

  • エグゼクティブスタート

  • エグゼストップポスト

.yaml ファイル

.yamlファイルは、管理対象アプリケーションに必須のファイルSysManです。これらのファイルは、インストール時にベース・サービス・ユニットおよびSysManベース・ポリシーの作成systemdに使用されるアプリケーション固有のポリシーを渡すために使用されます。ファイルは、アプリケーションが稼働するノードやルーティング・エンジンを決定するためにも使用されます。 .yaml

メモ:

同じアプリケーションの と の両方のファイルをパッケージに含める.yaml.serviceと、ファイル属性が優先され、.serviceアプリケーションは管理対象アプリケーションとしてsysman扱われます。

サードパーティのパッケージには、パッケージに複数のサービスをアタッチできます。によってSysMan制御される各アプリケーションは、アタッチされたサービスごとに個別の.yamlファイルを持ち、サービス名をファイル名として.yaml持つ必要があります。サードパーティのパッケージ名は、パッケージに含まれているサービスとは異なる可能性があるため、ファイル名はパッケージ名ではなくサービス名と一致させる必要があります。 .yaml

パッケージのディレクトリ内のroot-fsフォルダー内にusr/confファイルを配置.yamlする必要があります。

ファイルは .yaml 、対応するアプリケーションに関する情報を含む複数のフィールドで構成されています。ファイル・フィールドの定義については、 .yaml 以下のリストを参照してください。

binpath

バイナリ実行可能ファイルへのパスを定義します。

exec-start

アプリケーションの起動に必要なパスや引数など、アプリケーションの起動方法を定義します。この項目は、 ExecStart サービス単位の systemd 項目に対応します。

working-dir

バイナリを含む親ディレクトリへのパスを定義します。

id

アプリケーションの名前を制御します。ファイル名と一致する .yaml 必要があります。

network

ネットワーク タイプを または の値internalexternalで設定します。デバイスの外部と通信するアプリケーションでは、このexternal値を使用する必要があります。

on-exit

終了時にアプリケーションを再起動するための設定を制御します。

  • restart: 終了時にアプリケーションを再起動するかどうかを または false 値でtrue制御します。

resource

アプリケーションが使用するシステムリソースの制限を設定します。

  • max-memory: アプリケーションの各インスタンスで消費できるメモリの最大量を制御します。

  • node-attribute: アプリケーションを実行するノードの種類を、 や などの値-refpcで制御します。

    • node-type: 実行するアクションのノードの種類を、 や などの値-refpcで制御します。

  • startup: ユーザー定義の Junos OS Evolved 構成に または false の値がある場合trueに、インストール後にアプリケーションを起動するかどうかを制御します。

  • instances: アプリケーションが実行されるノードと、実行できるインスタンスの最大数を制御します。

    • all_nodes: または false 値を持つtrueすべてのノードでアプリケーションを実行するかどうかを制御します。

    • max_num_of_instances: アプリケーションが実行できるインスタンスの最大数を数値で制御します。

次のサンプル ファイルは、1 つのインスタンスのみを持つプライマリ ルーティング エンジンで実行されるサンプル .yaml アプリケーションの構成を示しています。フィールドfalseall_nodes に設定すると、アプリケーションがすべてのルーティングエンジンで実行されなくなります。max_number_of_instancesアプリケーションを 1 インスタンスに制限するように1フィールドを設定します。node-attributeフィールド-reを に設定すると、アプリケーションがルーティング エンジンで実行されます。この設定では、プライマリ ルーティング エンジンがダウンした場合、バックアップ ルーティング エンジンでアプリケーションが自動的に起動します。

サードパーティパッケージの作成

このツールは Jet-evo 、アプリケーション開発者が作成したアプリケーション、バイナリ、およびライブラリを使用して、サードパーティのパッケージを作成します。サードパーティ製パッケージを作成するプロセスは、Junos OS Evolved SysMan プロセスとLinux systemd プロセスのどちらがパッケージを管理するかによって異なります。特定のシナリオの詳細については、以下を参照してください。

SysMan管理パッケージの作成

によって SysMan 管理される外部アプリケーションには、アプリケーションにアタッチされたサービスのファイルが必要です .yaml

  1. Junos OS Evolved向けJET SDKを使用して、C、C++、またはPythonでアプリケーションをビルドおよびコンパイルします。
  2. サードパーティアプリケーションのフォルダ構造の説明に従って、必要なフォルダを作成します。
  3. バイナリ実行可能ファイルは usr/sbin/ フォルダに保管してください。
  4. .yamlファイルは usr/conf/ フォルダに、設定ファイルは etc/config/ フォルダに保持します。
  5. Jet-evoパッケージに固有のオプションを使用してツールを実行します。ツールの構成オプションの詳細については、「Jet-evo ツールの構成」を参照してくださいJet-evo
メモ:

ファイルに含める.yamlことができない複雑な関数systemdを使用する必要がある場合は、.yamlオプションで独自のsystemdファイルをファイルと一緒にパッケージ化できます。サービスファイルを etc/systemd/system/ フォルダに配置し、.yamlファイルを usr/conf フォルダに配置します。

systemd管理パッケージの作成

によって systemd 管理される外部アプリケーションには、 .service アプリケーションにアタッチされたサービスのファイルが必要です。

  1. Junos OS Evolved向けJET SDKを使用して、C、C++、またはPythonでアプリケーションをビルドおよびコンパイルします。
  2. サードパーティアプリケーションのフォルダ構造の説明に従って、必要なフォルダを作成します。
  3. バイナリ実行可能ファイルは usr/sbin/ フォルダに保管してください。
  4. サービスファイルを etc/systemd/system/フォルダ に保管してください。
  5. Jet-evoパッケージに固有のオプションを使用してツールを実行します。ツールの構成オプションの詳細については、「Jet-evo ツールの構成」を参照してくださいJet-evo

Jet-evo ツール構成

このツールは Jet-evo 、サードパーティパッケージの名前付け、バージョン番号の設定、インストールスクリプトの実行、およびサードパーティパッケージのインストール場所の設定に使用されます。これらの変数はすべて、コマンドの実行時に jet-evo 設定されるオプションによって制御されます。

メモ:

ツールで使用するJet-evo秘密キーの生成については、署名キーの生成を参照してください。

必須の引数

次の引数は必須です。

-n name

サードパーティパッケージの名前を設定します。

-r root:

パッケージに含まれるアプリケーションへのルート パスをコンマで区切って定義します。

-v version:

パッケージのバージョン番号を設定します。

省略可能な引数

次の引数は省略可能です。

-h

フィールドを説明する Jet-evo ヘルプ メッセージを表示します。

-a architecture

サードパーティ パッケージの対象となるアーキテクチャを選択します。

-n node

サードパーティパッケージが対象とするノードを定義します。

-i pre-install

プリインストール スクリプトのファイル パスを指定します。

-p post-install

インストール後のスクリプトへのファイル パスを指定します。

-u pre-uninstall

アンインストール前のスクリプトのファイル パスを指定します。

-d directory

パッケージをインストールするためのターゲットディレクトリを設定します。

-x

パッケージからすべてのデバッグ ファイルを削除します。

-t

ツールのすべての Jet-evo 出力を含む TAR ファイルを作成します。

-l name

パッケージャー ログ ファイルの名前とパスを設定します。

-k key

サードパーティ パッケージの署名に使用される秘密キー。

構文例

以下は、バージョン 1.0.1 という名前のsample_packageパッケージを使用したコマンドのjet-evo構文の例です。

サードパーティパッケージのインストール

サードパーティ製アプリケーション パッケージを構築または入手したら、Junos OS Evolvedデバイスにインストールできます。パッケージは、複数のアプリケーションを一緒にインストールできます。インストール プロセスでは、パッケージ内に存在する以前にインストールされたアプリケーションが上書きされます。パッケージ内のアプリケーションは、異なるパッケージ間で一意にすることをお勧めします。

サードパーティアプリケーションをインストールする前に、まずすべてのREに適切な署名キーと証明書をインストールする必要があります。署名キーが正しく生成されていない場合、インストールは失敗します。詳細については、「 署名キーの生成 」を参照してください。

コマンドを使用して、インストールされているキー show security integrity extended-keyring を表示できます。

コマンドを使用して、サードパーティのパッケージ request system software add package-name をインストールできます。例えば:

request system software add sample_package.1.0.1.tgz

メモ:

サードパーティパッケージは、マスタールーティングエンジンからのみインストールできます。

サードパーティのパッケージを正常にインストールすると、インストールプロセスによって関連するすべてのファイルがフォルダーに /data/var/external/current-evo-version/ コピーされます。出力では show version 、次のフィールドの下に External Software 、特定のソフトウェアバージョンの各ルーティングエンジン上のすべてのサードパーティパッケージが表示されます。

デバイスにインストールされているJunos OS Evolvedのすべてのバージョンと、各ノードと各ルーティングエンジンに現在のバージョンにインストールされているサードパーティパッケージを表示するには、次のコマンド show software list を使用できます。