オンデバイス JET アプリケーションの開発
概要
C 言語、C++ 言語、Python 言語で作成された JET アプリケーションは、デバイス上で実行できます。ダウンロードした JET VM でアプリケーションを開発し、これらのアプリケーションを Junos OS を実行するデバイスに導入できます。オンデバイス JET アプリケーションにサインインして、信頼できることを示すことができます。
Python 2.7 のサポート終了およびサポート終了日は 2020 年 1 月 1 日です。Python 2.7 の正式なアップグレード パスは Python 3 です。デバイス上の各種スクリプトに対してJunos OSを実行しているデバイスにPython 3のサポートが追加されるため、サポートされているスクリプトタイプをPython 2からPython 3に移行することをお勧めします。
Junos OS リリース 21.1R1 およびリリース 22.3R1 Junos OS Evolved以降、Python 2.7 はサポートされ set system scripts language python
なくなり、 ステートメントは非推奨になりました。代わりに ステートメントを set system scripts language python3
使用します。
図 1 は、符号なしおよび署名済みのオンデバイス JET アプリケーションのアプリケーション開発ワークフローを示しています。

「」も参照
符号なし JET アプリケーションの開発
符号なし JET アプリケーションは Python でのみ記述できます。
署名されていない JET アプリケーションを開発するには、
(オプション)JET VM をダウンロードしてセットアップします。 JET VM の設定を参照してください。
Python でアプリケーションを開発。
アプリケーションをパッケージ化します。 JET アプリケーションのパッケージを参照してください。
-
Junos デバイスで
language
ステートメントを設定します。たとえば、Python 3 を使用して、Python 3 をサポートする JET スクリプトを実行するには、次のようにします。[edit] user@device# set system scripts language python3
詳細については 、「 Junos OS を実行するデバイス用の Python 自動化スクリプト について」を参照してください。
Junos OS上で動作するデバイス上でアプリケーションを実行します。
署名された JET アプリケーションの開発
C、C++、または Python で署名されたアプリケーションを開発できます。
署名されたアプリケーションを開発するには、以下の手順に進めます。
必要なパッケージをダウンロードして JET VM を設定します。 JET VM の設定を参照してください。
署名証明書を要求します。 署名証明書の要求を参照してください。
アプリケーションを開発します。
アプリケーションが C または C++ で記述されている場合は、ライセンスを構成します。この手順は、Python で記述されたアプリケーションではオプションです。詳細については、 Junos OSを実行するデバイスでのJETアプリケーションとそのライセンスの設定 を参照してください。
パッケージをビルドし、取得した証明書を使用してパッケージに署名します。
Junos OS を実行するデバイスにアプリケーションを導入します。
署名証明書のリクエスト
JET アプリケーションを開発して配布するには、証明書要求スクリプトを実行して JET VM にパッケージ署名証明書をインストールする必要があります。このスクリプトは、JET で使用する署名キーと証明書要求の作成を支援します。
ジュニパーネットワークスを含む誰とも署名キーを共有しないでください。キーを使用すると、ルーターが信頼するアプリケーションに誰でも署名できます。そのため、ルーターの root パスワードと同じレベルのセキュリティでキーを処理します。署名キーを取得したら、VM の外部のファイルに保存します。
証明書要求スクリプトは、以下の情報を要求します。
市、州、国。
所属する組織とユニット。組織は漠然としないでください。ハイフン("-")は使用できません。
証明書タイプ: 証明書が商用かプライベートかを指定します。ジュニパー以外の事業体は商用を使用する必要があります。プライベート認定書は、組織がジュニパーの場合にのみ割り当てられます。
プロバイダ プレフィックス:これは、各 JET パートナーにジュニパーが割り当てる一意のプロバイダー名です。
ユーザー文字列: これは、選択した追加仕様です。これは、開発チームまたはプロジェクト名を指定する文字列です。ユーザー文字列は、小文字の後に1つ以上の小文字または数字(teamjet2など)で構成できます。
デプロイスコープ:展開スコープは、同じJETパートナーの複数の証明書を区別するためにジュニパーが割り当てた文字列です。これにより、生成された証明書の有効期間が定義されます。範囲は市販又は評価することができる。[なし] が割り当てられている場合は、空のままにします。
インデックス番号:この番号は、証明書世代番号と呼ばれます。最初の認定書は1になります。証明書の有効期限が切れ、新しい証明書を要求すると、この数は増分されます。
電子メール アドレス:証明書の連絡先の電子メール アドレスが証明書に埋め込まれます。組織内の部門または部門の電子メール アドレスを使用することをお勧めします。個人の電子メール アドレスは使用しないことをお勧めします。
署名されたアプリケーションを作成するには、以下の手順で説明するように証明書を要求し、コピーします。符号なしアプリケーションを作成する場合、この手順はオプションです。
証明書を手動で要求するには、以下の手順にいます。
デバイスに存在しない場合は 、/usr/local/junos-jet/certs ディレクトリを作成します。
VM ターミナルで、 コマンドを
jet-certificate-request
実行します。このスクリプトが、一連の質問を導きます。質問に回答し、各回答の後に Enter キーを押します。上記の各回答の要件を参照してください。
このスクリプトは、回答に基づいて 、/usr/local/junos-jet/certs ディレクトリ certnameに _key.pem と certname_req.pem の 2 つのファイルを生成します。 certname は証明書の名前です。
証明書名は、ORGANIZATION-USER-TYPE-NUMBER という形式に従う必要があります。4 つのパラメーターはすべて必須か、それ以外の場合は次のエラーが表示されます。
ERROR: CN has invalid format; regex: ^([a-z0-9]+)-([a-z0-9]+)-(commercial|private)-([1-9][0-9]*)$ Expected format: ORGANIZATION-USER-TYPE-NUMBER organization: [a-z0-9]+ Must be "juniper" for type is "private" user: [a-z0-9]+ type: commercial|private number: [1-9][0-9]*
VM の外部に certname_key.pem ファイルを保存します。これが署名キーです。開発部門以外の誰もアクセスできないようにします。ジュニパーネットワークスを含む誰とも署名キーを共有しないでください。
キーを使用すると、ルーターが信頼するアプリケーションに誰でも署名できます。そのため、ルーターの root パスワードと同じレベルのセキュリティでキーを処理します。
certname_req.pem ファイルを JET 証明書処理(mailto:jet-cert@juniper.net)に送信します。このファイルには証明書要求が含まれています。要求者は、組織に代わって署名証明書を要求する権限を与えられている必要があります。JET 証明書処理により、証明書が直ちに送信されます。
証明書を受け取ったときに、 として certname 保存し、 /usr/local/junos-jet/certs ディレクトリにコピーします。
証明書と署名キーが /usr/local/junos-jet/certs ディレクトリに含まれています。
64 ビット アプリケーションのコンパイル
JET は、Junos OS と FreeBSD の 64 ビット アプリケーション、およびアップグレードされた FreeBSD を搭載した Junos OS をサポートしています。アプリケーションをパッケージ化する準備ができたら、以下のコマンドを使用して 64 ビット・アプリケーションをコンパイルし、AMD64 または ARM64 64 ビット・プロセッサー・アーキテクチャで使用してください。
AMD64 および Junos OS と FreeBSD で使用するためのアプリケーションをコンパイルするには、以下の手順にしたがってください。
JETパッケージに含めるべきGCCツールチェインがあるか確認してください。
コマンドを
mk-amd64 application name
使用してアプリケーション パッケージを構築します。
AMD64 および Junos OS とアップグレードされた FreeBSD で使用するためのアプリケーションをコンパイルするには、以下の手順にしたがってください。
JET パッケージに含める必要がある Clang ツールチェインがあるか確認します。
コマンドを
mk-amd64,bsdx application name
使用してアプリケーション パッケージを構築します。
ARM64 および Junos OS とアップグレードされた FreeBSD で使用するためのアプリケーションをコンパイルするには、
JET パッケージに含める必要がある Clang ツールチェインがあるか確認します。
コマンドを
mk-arm64,bsdx application name
使用してアプリケーション パッケージを構築します。
例: 署名された C パッケージを開発する
JET VM を設定し、署名付き認定資格を取得したら、VM に開発サンドボックスを作成し、署名されたオンデバイス アプリケーションの開発を開始する準備が整います。この例を使用して、C アプリケーションエコークライアントとエコーサーバーを作成します。
例: C 依存関係のない署名された Python パッケージを開発する
JET VM を設定し、署名付き認定資格を取得したら、VM に開発サンドボックスを作成し、署名されたオンデバイス アプリケーションの開発を開始する準備が整います。この例を使用して、C 依存関係のない署名された Python パッケージを開発します。
次に、Junos デバイスを設定し、パッケージをインストールします。
設定モードに入ります。
root@device> configure Entering configuration mode [edit] root@device#
-
必要に応じて、JunosデバイスでアプリケーションのプロバイダーID、ライセンスタイプ、導入スコープを設定します。パッケージ化に使用したのと同じプロバイダ ライセンスを使用します。
root@device# set system extensions providers 12345 license-type juniper deployment-scope commercial
詳細については、 Junos OS を実行するデバイスでの JET アプリケーションとそのライセンスの設定を参照してください。
-
動作モードに終了し、コピーしたパッケージを Junos デバイスにインストールします。
root@device# exit root@device> request system software add /var/tmp/SamplePyApp-x86-32-20180828.231545_user.tgz
メモ:設定されていない場合
providers
、この手順は失敗します。 パッケージが正常にインストールされたことを確認します。
root@device> show version Hostname: device Model: mx480 … … JET app SamplePyApp [20180828.231545_user]
設定モードに入ります。
root@device> configure Entering configuration mode [edit] root@device#
Junos OS CLI を使用して、コマンドラインの引数を設定します。Junos OS を実行するデバイスの /var/db/scripts/jet/ ディレクトリに Python JET スクリプトが用意されている場合、ファイルのコマンド ライン引数を設定し、Junos CLI から引数を指定できます。
アプリケーションの引数を次に示します。
import argparse def main(): parser = argparse.ArgumentParser(description='This is a demo script.') parser.add_argument('-arg1', required=True) parser.add_argument('-arg2', required=True) args = parser.parse_args() print args.arg1 print args.arg2 if __name__ == '__main__': main()
CLI でコマンドライン引数を設定します。この例では、スクリプトファイル名は
cmdline_args.py
です。root@device# set system extensions extension-service application file cmdline_args.py arguments "-arg1 jet -arg2 application"
設定をコミットし、動作モードに終了します。
root@device# commit root@device# exit
アプリケーションを実行します。
root@device> request extension-service start cmdline_args.py Extension-service application 'cmdline_args.py' started with PID: 12345 jet application
例: C 依存関係を持つ署名された Python パッケージを開発する
JET VM を設定し、署名付き認定資格を取得したら、VM に開発サンドボックスを作成し、署名されたオンデバイス アプリケーションの開発を開始する準備が整います。この例を使用して、C 依存関係を持つ署名された Python パッケージを開発します。