Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Junos OS を実行するデバイスの YANG でのカスタム RPC の作成

ジュニパーネットワークスは、Junos OS 運用コマンドのリモート プロシージャ コール(RPC)を定義する YANG モジュールを提供します。Junos OS リリース 16.1R3 以降では、Junos OS を実行するサポート対象デバイスのカスタム RPC を定義する YANG データ モデルも作成できます。カスタム RPC を作成することで、それらのデバイス上の特定の運用タスクの入力パラメーターと操作と出力フィールドと書式設定を正確に定義できます。カスタム YANG RPC を使用して運用コマンド階層を拡張する場合、RPC のハンドラーとして機能するアクション スクリプトも指定する必要があります。RPC 定義は、RPC の実行時に呼び出されるアクション スクリプトを参照します。

このトピックでは、Junos OS を実行するデバイスのカスタム RPC を定義する YANG モジュールを作成するための一般的な手順について説明します。RPC アクション スクリプトの作成と RPC の CLI 出力のカスタマイズの詳細については、「 Junos OS を実行しているデバイスでの YANG RPC のアクション スクリプトの作成」および「RPC 出力をフォーマットするための Junos OS YANG 拡張機能について」を参照してください。

このセクションでは、Junos OS を実行するデバイスの RPC を定義する YANG モジュールの汎用テンプレートを示します。テンプレートの後に、テンプレートのさまざまなセクションとステートメントの詳細な説明が続きます。

RPC はモジュール内で定義されます。モジュール名は説明的で、そのモジュールに含まれている RPC の一般的な目的を示す必要があり、モジュールの名前空間は一意である必要があります。

メモ:

RFC 6020YANG - ネットワーク構成プロトコル(NETCONF)のデータ モデリング言語に従って、モジュール名とモジュールが存在するファイルのベース名は同じである必要があります。たとえば、モジュール名が 、モジュールのファイル名は get-if-infoget-if-info.yang である必要があります。

モジュールは、Junos OS DDL 拡張モジュールをインポートし、プレフィックスを定義する必要があります。この拡張機能モジュールには、Junos OS を実行するデバイスで実行される RPC の定義に必要な YANG 拡張機能が含まれています。

メモ:

Junos OS リリース 17.4R1 以降、Junos OS YANG モジュールは、モジュールの名前、ファイル名、名前空間に新しい命名規則を使用します。

モジュール内のいずれかの RPC がフォーマットされた ASCII 出力をレンダリングする場合、モジュールは Junos OS ODL 拡張モジュールをインポートし、プレフィックスを定義する必要があります。ODL 拡張モジュールは、CLI で RPC の運用コマンドを実行するとき、または RPC 出力をテキスト形式で要求するときに、出力をレンダリングする方法を正確に指定するために使用する YANG 拡張機能を定義します。

モジュールを担当する組織と、モジュールの説明を含めます。

モジュール内では、それぞれ固有の名前を持つ 1 つ以上の RPC を定義できます。RPC 名は RPC をリモートで実行するために使用されるため、RPC の目的を明確に示す必要があります。RPC の目的は、ステートメントで description さらに明確にできます。RPC の CLI コマンドも定義すると、そのコマンド リストのコンテキスト依存ヘルプに RPC の説明が表示されます。

RPC 定義内で、Junos OS DDL 拡張ステートメントである 、 action-execute、および script ステートメントを定義commandします。ステートメントはcommand、Junos OS CLI で RPC を実行するために使用する運用コマンドを定義します。RPC をリモートで実行するには、リクエスト タグに RPC 名を使用します。

ステートメントとscriptサブステートメントはaction-execute、すべての RPC に対して定義する必要があります。サブステートメントはscript、RPC の実行時に呼び出されるアクション スクリプトの名前を定義します。RPC ごとに 1 つだけのアクション スクリプトを定義する必要があります。

メモ:

Junos OSリリース17.3以降、 action-execute ステートメントは command.以前の action-execute リリースでは、and command ステートメントは同じレベルに配置され command 、ステートメントはオプションです。

  • Junos OS リリース 17.3 以降で、ステートメントとそのサブステートメントを定義 command します。

  • Junos OS リリース 17.2 以前では、and script ステートメントをaction-execute定義し、必要に応じてステートメントをcommand定義します。

メモ:

または request system yang update コマンドを発行して、新しいまたは既存の YANG パッケージの一部として YANG モジュールおよびアクション スクリプトをデバイスにrequest system yang add追加する必要があります。したがって、ステートメントのアクション スクリプトjunos:scriptのパスではなく、名前を指定するだけで済みます。

メモ:

アクション スクリプトが Python で作成されている場合は、スクリプトが実行される各デバイスの階層レベルの下[edit system scripts]で or language python3 ステートメントを設定language pythonして、署名されていない Python スクリプトをデバイスで実行できるようにする必要があります。

RPC 操作への入力パラメーターは、オプション input のステートメント内で定義されます。RPC を実行すると、Junos OS は RPC のアクション スクリプトを呼び出し、すべての入力パラメーターをスクリプトに渡します。

メモ:

Junos OS リリース 19.2R1 以降、カスタム YANG RPC は、Junos OS CLI で RPC のコマンドを実行する際に、タイプ empty の入力パラメーターをサポートします。以前のリリースでは、タイプ empty の入力パラメーターは、NETCONF または Junos XML プロトコル セッションで RPC を実行する場合にのみサポートされています。

オプション output のステートメントは、出力パラメーターを RPC 操作に囲みます。ステートメントには output 、最上位のルート コンテナーを 1 つ含めることができます。ルート コンテナの名前と RPC 名を相互に関連付けるのが良い方法です。たとえば、RPC 名が 、 の場合、 get-xyz-informationコンテナ名は xyz-information.ステートメントのサブステートメントは、RPC の output ノードの下の output ノードを定義します。XML 出力では、これは要素の下 <rpc-reply> の XML 要素に変換されます。

ルート コンテナ内では、ステートメントをcontainerleafめることができます。リーフ ステートメントは、そのコンテナの RPC 出力に含まれるデータを記述します。

デフォルトでは、RPC 出力の形式は XML です。また、CLI でその RPC の運用コマンドを実行するとき、または RPC 出力をテキスト形式で要求したときに表示されるフォーマット済み ASCII 出力を定義することもできます。

メモ:

Junos OS リリース 17.3 以降、カスタム RPC の CLI フォーマットは、拡張ステートメント内で junos-odl:format 定義されています。以前のリリースでは、ステートメントを含むコンテナを使用して CLI フォーマットが junos-odl:cli-format 定義されています。

  • Junos OS リリース 17.3 以降では、ステートメント(Junos OS ODL 拡張ステートメント)を定義することで、CLI フォーマットを定義 junos-odl:format します。

  • Junos OS リリース 17.3 より前は、ステートメントを含む子コンテナ内の特定のコンテナの CLI フォーマットを junos-odl:cli-format 定義します。

CLI フォーマットを定義するステートメントまたはコンテナー内で、Junos OS ODL 拡張モジュールで定義されたステートメントを使用して、RPC の CLI 出力をカスタマイズできます。フォーマットされたASCII出力のレンダリングの詳細については、「 Junos OSを実行しているデバイス上でYANG RPC出力をカスタマイズする」を参照してください。また、RPC の CLI 出力で特定のコンテナ内のデータが出力されるタイミングを規定することもできます。同じ RPC に対して異なるレベルの出力を構築する方法については、「 Junos OS を実行するデバイスのカスタム YANG RPC で異なる出力レベルを定義する」を参照してください。

Junos OS を実行しているデバイスで RPC を使用するには、次の手順に従います。

  • モジュールとアクション スクリプトをデバイスにダウンロードする
  • or request system yang update operational コマンドを発行して、新しい YANG パッケージまたは既存の YANG パッケージにファイルをrequest system yang add追加します。
  • RPC の実行
    • CLI で RPC を実行するには、ステートメントで定義されたコマンドを junos:command 発行します。
    • RPC をリモートで実行するには、RPC リクエスト操作で RPC 名を使用します。
メモ:

Junos OS リリース 17.3R1 以降では、カスタム YANG データ モデルをデバイスにロードするときに、必要な Junos OS 拡張モジュールを明示的にロードする必要はありません。以前のリリースでは、モジュールを使用するすべてのパッケージの Junos OS 拡張モジュールをロードする必要があります。

ステートメントで定義 junos:command されたコマンドを発行して CLI で RPC を実行すると、デバイスは RPC によって定義された CLI 形式で RPC 出力を表示します。RPC が CLI フォーマットを定義していない場合、デフォルトでは、その RPC の出力は CLI に表示されません。ただし、フィルターをコマンドに追加することで、その RPC の XML 出力を | display xml CLI に表示することはできます。

YANG RPC の詳細については、 RFC 6020YANG - A Data Modeling Language for the Network Configuration Protocol(NETCONF)、および関連 RFC を参照してください。

リリース履歴テーブル
リリース
説明
19.2R1
Junos OS リリース 19.2R1 以降、カスタム YANG RPC は、Junos OS CLI で RPC のコマンドを実行する際に、タイプ empty の入力パラメーターをサポートします。
17.3R1
Junos OSリリース17.3以降、 action-execute ステートメントは command.
17.3R1
Junos OS リリース 17.3 以降、カスタム RPC の CLI フォーマットは、拡張ステートメント内で junos-odl:format 定義されています。
17.3R1
Junos OS リリース 17.3R1 以降では、カスタム YANG データ モデルをデバイスにロードするときに、必要な Junos OS 拡張モジュールを明示的にロードする必要はありません。