Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

オンデバイス 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 アプリケーションのアプリケーション開発ワークフローを示しています。

図 1:オンデバイス JET アプリケーション ワークフロー On-Device JET Application Workflow

符号なし JET アプリケーションの開発

符号なし JET アプリケーションは Python でのみ記述できます。

署名されていない JET アプリケーションを開発するには、

  1. (オプション)JET VM をダウンロードしてセットアップします。 JET VM の設定を参照してください。

  2. Python でアプリケーションを開発。

  3. アプリケーションをパッケージ化します。 JET アプリケーションのパッケージを参照してください。

  4. Junos デバイスで language ステートメントを設定します。たとえば、Python 3 を使用して、Python 3 をサポートする JET スクリプトを実行するには、次のようにします。

    詳細については 、「 Junos OS を実行するデバイス用の Python 自動化スクリプト について」を参照してください。

  5. Junos OS上で動作するデバイス上でアプリケーションを実行します。

署名された JET アプリケーションの開発

C、C++、または Python で署名されたアプリケーションを開発できます。

署名されたアプリケーションを開発するには、以下の手順に進めます。

  1. 必要なパッケージをダウンロードして JET VM を設定します。 JET VM の設定を参照してください。

  2. 署名証明書を要求します。 署名証明書の要求を参照してください。

  3. アプリケーションを開発します。

  4. アプリケーションが C または C++ で記述されている場合は、ライセンスを構成します。この手順は、Python で記述されたアプリケーションではオプションです。詳細については、 Junos OSを実行するデバイスでのJETアプリケーションとそのライセンスの設定 を参照してください。

  5. パッケージをビルドし、取得した証明書を使用してパッケージに署名します。

  6. Junos OS を実行するデバイスにアプリケーションを導入します。

署名証明書のリクエスト

JET アプリケーションを開発して配布するには、証明書要求スクリプトを実行して JET VM にパッケージ署名証明書をインストールする必要があります。このスクリプトは、JET で使用する署名キーと証明書要求の作成を支援します。

注意:

ジュニパーネットワークスを含む誰とも署名キーを共有しないでください。キーを使用すると、ルーターが信頼するアプリケーションに誰でも署名できます。そのため、ルーターの root パスワードと同じレベルのセキュリティでキーを処理します。署名キーを取得したら、VM の外部のファイルに保存します。

証明書要求スクリプトは、以下の情報を要求します。

  • 市、州、国。

  • 所属する組織とユニット。組織は漠然としないでください。ハイフン("-")は使用できません。

  • 証明書タイプ: 証明書が商用かプライベートかを指定します。ジュニパー以外の事業体は商用を使用する必要があります。プライベート認定書は、組織がジュニパーの場合にのみ割り当てられます。

  • プロバイダ プレフィックス:これは、各 JET パートナーにジュニパーが割り当てる一意のプロバイダー名です。

  • ユーザー文字列: これは、選択した追加仕様です。これは、開発チームまたはプロジェクト名を指定する文字列です。ユーザー文字列は、小文字の後に1つ以上の小文字または数字(teamjet2など)で構成できます。

  • デプロイスコープ:展開スコープは、同じJETパートナーの複数の証明書を区別するためにジュニパーが割り当てた文字列です。これにより、生成された証明書の有効期間が定義されます。範囲は市販又は評価することができる。[なし] が割り当てられている場合は、空のままにします。

  • インデックス番号:この番号は、証明書世代番号と呼ばれます。最初の認定書は1になります。証明書の有効期限が切れ、新しい証明書を要求すると、この数は増分されます。

  • 電子メール アドレス:証明書の連絡先の電子メール アドレスが証明書に埋め込まれます。組織内の部門または部門の電子メール アドレスを使用することをお勧めします。個人の電子メール アドレスは使用しないことをお勧めします。

署名されたアプリケーションを作成するには、以下の手順で説明するように証明書を要求し、コピーします。符号なしアプリケーションを作成する場合、この手順はオプションです。

証明書を手動で要求するには、以下の手順にいます。

  1. デバイスに存在しない場合は 、/usr/local/junos-jet/certs ディレクトリを作成します。

  2. VM ターミナルで、 コマンドを jet-certificate-request 実行します。

  3. このスクリプトが、一連の質問を導きます。質問に回答し、各回答の後に Enter キーを押します。上記の各回答の要件を参照してください。

  4. このスクリプトは、回答に基づいて 、/usr/local/junos-jet/certs ディレクトリ certnameに _key.pem と certname_req.pem の 2 つのファイルを生成します。 certname は証明書の名前です。

    証明書名は、ORGANIZATION-USER-TYPE-NUMBER という形式に従う必要があります。4 つのパラメーターはすべて必須か、それ以外の場合は次のエラーが表示されます。

  5. VM の外部に certname_key.pem ファイルを保存します。これが署名キーです。開発部門以外の誰もアクセスできないようにします。ジュニパーネットワークスを含む誰とも署名キーを共有しないでください。

    キーを使用すると、ルーターが信頼するアプリケーションに誰でも署名できます。そのため、ルーターの root パスワードと同じレベルのセキュリティでキーを処理します。

  6. certname_req.pem ファイルを JET 証明書処理(mailto:jet-cert@juniper.net)に送信します。このファイルには証明書要求が含まれています。要求者は、組織に代わって署名証明書を要求する権限を与えられている必要があります。JET 証明書処理により、証明書が直ちに送信されます。

  7. 証明書を受け取ったときに、 として certname 保存し、 /usr/local/junos-jet/certs ディレクトリにコピーします。

  8. 証明書と署名キーが /usr/local/junos-jet/certs ディレクトリに含まれています。

64 ビット アプリケーションのコンパイル

JET は、Junos OS と FreeBSD の 64 ビット アプリケーション、およびアップグレードされた FreeBSD を搭載した Junos OS をサポートしています。アプリケーションをパッケージ化する準備ができたら、以下のコマンドを使用して 64 ビット・アプリケーションをコンパイルし、AMD64 または ARM64 64 ビット・プロセッサー・アーキテクチャで使用してください。

AMD64 および Junos OS と FreeBSD で使用するためのアプリケーションをコンパイルするには、以下の手順にしたがってください。

  1. JETパッケージに含めるべきGCCツールチェインがあるか確認してください。

  2. コマンドを mk-amd64 application name 使用してアプリケーション パッケージを構築します。

AMD64 および Junos OS とアップグレードされた FreeBSD で使用するためのアプリケーションをコンパイルするには、以下の手順にしたがってください。

  1. JET パッケージに含める必要がある Clang ツールチェインがあるか確認します。

  2. コマンドを mk-amd64,bsdx application name 使用してアプリケーション パッケージを構築します。

ARM64 および Junos OS とアップグレードされた FreeBSD で使用するためのアプリケーションをコンパイルするには、

  1. JET パッケージに含める必要がある Clang ツールチェインがあるか確認します。

  2. コマンドを mk-arm64,bsdx application name 使用してアプリケーション パッケージを構築します。

例: 署名された C パッケージを開発する

JET VM を設定し、署名付き認定資格を取得したら、VM に開発サンドボックスを作成し、署名されたオンデバイス アプリケーションの開発を開始する準備が整います。この例を使用して、C アプリケーションエコークライアントとエコーサーバーを作成します。

  1. サンドボックスをご確認ください。サンドボックスとは、ビルド環境を正しく条件付けるためにラッパー スクリプト mk によって使用される、.サンドボックス-嫉妬という小さな環境ファイルが入ったビルド ツリーです。
    メモ:

    エコー クライアントはデモ アプリケーションです。 bin/ ディレクトリでは、必要なすべての設定およびビルド関連ファイルを、エコー クライアントのソース ファイルとともにサンドボックス内で利用できます。

  2. エコー クライアント パッケージを構築します。
    メモ:

    Junos OS リリース 20.2R1 以降、ACX710 デバイスで JET アプリケーションを実行する場合は、C、Python、または Ruby で作成された JET アプリケーションの ARM ベースのコンパイルに Clang ツールチェーンを使用できます。Clang ツールチェインを使用してアプリケーションをコンパイルする代わりにmk-i386,bsdx、 コマンドmk-arm,bsdxを使用します。

  3. エコークライアントパッケージをJunos OS上で動作するデバイスにコピーします。
  4. Junos デバイスで設定モードに入ります。
  5. エコー クライアント パッケージをインストールします。

    インストールが正常に完了したことを確認します。

  6. エコーサーバーのサンドボックスをご確認ください。
  7. エコー サーバー パッケージを構築します。
  8. エコー サーバー パッケージを Junos VM にコピーします。
  9. エコー サーバー パッケージを Junos デバイスに追加します。
  10. パッケージが正常に追加されたことを確認します。
  11. JunosデバイスでエコーサーバーのプロバイダーID、ライセンスタイプ、導入スコープを設定します。パッケージ化に使用したのと同じプロバイダ ライセンスを使用します。
  12. Junosデバイス上のエコーサーバーを設定します。
  13. JunosデバイスでエコークライアントのプロバイダーID、ライセンスタイプ、導入スコープを設定します。パッケージ化に使用したのと同じプロバイダ ライセンスを使用します。
  14. Junosデバイスでエコークライアントアプリケーションを設定します。
  15. エコー クライアント アプリケーションを実行します。

例: C 依存関係のない署名された Python パッケージを開発する

JET VM を設定し、署名付き認定資格を取得したら、VM に開発サンドボックスを作成し、署名されたオンデバイス アプリケーションの開発を開始する準備が整います。この例を使用して、C 依存関係のない署名された Python パッケージを開発します。

  1. VM で、/home/user ディレクトリに移動します。
  2. コマンドを使用してサンドボックスをmksb作成します。このコマンドSamplePyAppはサンドボックスの名前です。サンドボックスとは、ビルド環境を正しく条件付けるためにラッパー スクリプト mk によって使用される、.サンドボックス-嫉妬という小さな環境ファイルが入ったビルド ツリーです。
  3. サンドボックス内にサブディレクトリを作成します。

    まず、 コマンドを workon 使用してサンドボックスに入ります。コマンドを workon 使用すると、 $SB/src ディレクトリに直接移動し、サンドボックスが正しく設定されます。

    または、サンドボックスの src ディレクトリに移動することもできますcd

    次に、Python、ライブラリ、または bin(実行可能)ファイルのどちらが必要かに応じて、 $SB/src/python$SB/src/lib、または $SB/src/bin のアプリケーション コードのサブディレクトリを作成します。

  4. コードを開発します。

    Python 3 を使用してアプリケーションを作成する場合は、スクリプトの例外ブロックに PASS キーワードを含めます。

  5. アプリケーション JSON ファイルを書き込み、アプリケーションをパッケージ化します。

    詳細については、「JET アプリケーションのパッケージ化」 を参照してください。

  6. jet-pkg-gen.py へのパスを .bashrc ファイルに追加します。
  7. コマンドを実行して、適切な makefiles を jet-pkg-gen.py 自動生成します。コマンドには jet-pkg-gen.py 2 つのオプションがあります。
    • オプションの -i 後に JSON ファイルのパスとファイル名が続きます。

    • オプションの -p 後にサンドボックスの src ディレクトリへのパスが続きます。

    たとえば、サンドボックス名が SamplePyApp の場合:

    メモ:

    ほとんどの場合、自動生成されたアプリケーションの makefile は正しいと言えます。外部ライブラリの依存関係がある場合は、それに応じて makefile を調整します。

  8. パッケージ全体を構築します。

    まず、src ディレクトリ($SB/src)に戻ります。次にmk-i386 SamplePyApp、ステップ5のJSONファイルからの コマンドを実行しますSamplePyApp"app-name"

    メモ:

    Junos OS リリース 20.2R1 以降、ACX710 デバイスで JET アプリケーションを実行する場合は、C、Python、または Ruby で作成された JET アプリケーションの ARM ベースのコンパイルに Clang ツールチェーンを使用できます。Clang ツールチェインを使用してアプリケーションをコンパイルする代わりにmk-i386,bsdx、 コマンドmk-arm,bsdxを使用します。

  9. Junos OS を実行するデバイスにパッケージをコピーします。

次に、Junos デバイスを設定し、パッケージをインストールします。

  1. 設定モードに入ります。

  2. 必要に応じて、JunosデバイスでアプリケーションのプロバイダーID、ライセンスタイプ、導入スコープを設定します。パッケージ化に使用したのと同じプロバイダ ライセンスを使用します。

    詳細については、 Junos OS を実行するデバイスでの JET アプリケーションとそのライセンスの設定を参照してください。

  3. 動作モードに終了し、コピーしたパッケージを Junos デバイスにインストールします。

    メモ:

    設定されていない場合 providers 、この手順は失敗します。

  4. パッケージが正常にインストールされたことを確認します。

  5. 設定モードに入ります。

  6. Junos OS CLI を使用して、コマンドラインの引数を設定します。Junos OS を実行するデバイスの /var/db/scripts/jet/ ディレクトリに Python JET スクリプトが用意されている場合、ファイルのコマンド ライン引数を設定し、Junos CLI から引数を指定できます。

    アプリケーションの引数を次に示します。

    CLI でコマンドライン引数を設定します。この例では、スクリプトファイル名は cmdline_args.pyです。

  7. 設定をコミットし、動作モードに終了します。

  8. アプリケーションを実行します。

例: C 依存関係を持つ署名された Python パッケージを開発する

JET VM を設定し、署名付き認定資格を取得したら、VM に開発サンドボックスを作成し、署名されたオンデバイス アプリケーションの開発を開始する準備が整います。この例を使用して、C 依存関係を持つ署名された Python パッケージを開発します。

  1. サンドボックスをご確認ください。
  2. Python サブディレクトリにアプリケーション ディレクトリを作成します。
  3. ビットアレイは、C依存を持つ比較的単純なPythonモジュールの例です。https://pypi.org/project/bitarray/ からbitarray ダウンロードしてPythonアプリケーションディレクトリに抽出します。

    これは、bitarrayモジュールを使用する単純なPythonアプリケーションの例です。

    Python 3 を使用してアプリケーションを作成する場合は、スクリプトの例外ブロックに PASS キーワードを含めます。

  4. 外部ソース・ファイルを参照する JSON 構成ファイルを作成します。詳細については、「 JET アプリケーションのパッケージ化」 を参照してください。
  5. 次のコマンドを実行して、必要な makefiles と、パッケージのインストール時に Junos デバイス上のファイルを検索するマニフェスト ファイルを作成します。
  6. Junos デバイスで bitarray モジュールを検索するには、__init__.py ファイルの /PyAppC/ パスと _bitarray.so ファイルの bitarray/ ディレクトリ パスを追加します。
  7. アプリケーションをビルドしてパッケージ化します。
    メモ:

    Junos OS リリース 20.2R1 以降、ACX710 デバイスで JET アプリケーションを実行する場合は、C、Python、または Ruby で作成された JET アプリケーションの ARM ベースのコンパイルに Clang ツールチェーンを使用できます。Clang ツールチェインを使用してアプリケーションをコンパイルする代わりにmk-i386,bsdx、 コマンドmk-arm,bsdxを使用します。

  8. Junos OSを実行するデバイスにビルドパッケージをコピーします。
  9. 必要に応じて、JunosデバイスでアプリケーションのプロバイダーID、ライセンスタイプ、導入スコープを設定します。パッケージ化に使用したのと同じプロバイダ ライセンスを使用します。
  10. Junos OS を実行しているデバイスにパッケージをインストールします。

    パッケージが正常にインストールされると、マニフェスト ファイルで指定されたとおりに、依存する Python モジュールと C 共有ライブラリが標準の Python モジュール パス内のデバイスにインストールされます。

  11. 設定モードでアプリケーションを追加します。
  12. アプリケーションの実行
リリース履歴テーブル
リリース
説明
20.2R1
Junos OS リリース 20.2R1 以降、ACX710 デバイスで JET アプリケーションを実行する場合は、C、Python、または Ruby で作成された JET アプリケーションの ARM ベースのコンパイルに Clang ツールチェーンを使用できます。