Junos YANG モジュールについて
ジュニパーネットワークスは、設定階層、運用コマンド、Junos 拡張の YANG モデルを使用して、Junos デバイスのスキーマを公開します。以下のセクションでは、ネイティブの Junos YANG モジュールについて説明します。
Junos YANG モジュールの概要
ジュニパーネットワークスは、Junos デバイスの設定階層と運用コマンド、YANG 拡張とタイプを定義する YANG モジュールを提供します。Junos OSリリース17.2以降、Junos YANGモジュールはデバイスファミリーに固有のものです。 表1 は、異なるJunosデバイスファミリーの識別子の概要を示し、各ファミリーに含まれるプラットフォームを示しています。
デバイス ファミリー識別子 |
サポートされているプラットフォーム |
---|---|
junos |
ACX シリーズ、EX シリーズ(特定のプラットフォーム)、MX シリーズ、PTX シリーズ |
junos-es |
J シリーズ、LN シリーズ、SRX シリーズ |
junos-ex |
EX シリーズ(特定のプラットフォーム) |
junos-qfx |
QFXシリーズ |
同じシリーズ内の異なるプラットフォームは、異なるデバイスファミリーの下で分類される場合があります。デバイスでオペレーションモードコマンドまたはRPCを show system information
実行することで、特定のデバイスのファミリーを <get-system-information/>
検証できます。コマンド出力の フィールドの Family
値、または <os-name>
RPC 応答の要素は、デバイス ファミリーを示しています。
Junos OS リリース 17.4R1 以降、設定 YANG モジュールは、複数の小さなモジュールで拡張されたルート モジュールに分割され、ネイティブの Junos YANG モジュールはモジュールの名前、ファイル名、名前空間に新しい命名規則を使用します。モジュール名とファイル名には、デバイスファミリーと、モジュール内のスキーマが属する設定またはコマンド階層の領域が含まれます。さらに、モジュールファイル名にはリビジョン日付が含まれています。 表 2 は、Junos デバイスにネイティブな YANG モジュールをまとめたもので、異なるモジュール名が使用されているリリースを示しています。
Junos YANG モジュール |
説明 |
モジュール名 |
リリース |
---|---|---|---|
構成モジュール |
Junos 構成階層のスキーマを定義します。 Junos OSリリース17.4R1以降、設定YANGモジュールは、複数の小さなモジュールで強化されたルートモジュールに分割されます。 |
|
14.2~17.3 |
|
17.4R1以降 |
||
運用コマンド モジュール |
運用モード コマンドのリモート プロシージャ コール(RPC)を定義する運用コマンド階層およびモジュールの集合型グループを表します。コマンド階層の異なる領域には、個別のモジュールがあります。 |
|
16.1~17.3 |
|
17.4R1以降 |
||
モジュール拡張モジュール |
Junos デバイスのデータ定義言語(IMAP)ステートメントが含まれます。 このモジュールには、 および |
|
15.1~17.3 |
|
17.4R1以降 |
||
ODL 拡張モジュール |
Junos デバイスで実行される RPC のフォーマット済み ASCII 出力を作成およびカスタマイズするために使用できる出力定義言語(ODL)ステートメントが含まれています。 |
|
16.1~17.3 |
|
17.4R1以降 |
||
メタデータ注釈拡張モジュール |
構成操作のメタデータ注釈を定義します。 注釈は、RFC 7952、 YANGによるメタデータの定義と使用で定義されています。 |
junos-configuration-metadata |
22.2R1以降(Junos OS Evolved) |
タイプ モジュール |
YANG タイプの定義が含まれます。 |
|
17.4R1以降 |
異なるリリースの異なるデバイスファミリーのYANGモジュールをサポートするために、ダウンロードしたモジュールはデバイスファミリー別に整理され、各モジュールの名前、ファイル名、名前空間は、モジュール内のスキーマが属するデバイスファミリーを反映しています。モジュールの取得については、 Junos YANGモジュールのダウンロードと生成を参照してください。モジュール名前空間については、 Junos YANGモジュールの名前空間とプレフィックスについてを参照してください。
Junos YANG モジュールのダウンロードと生成
Junos YANG モジュールを取得できるのは、次のとおりです。
-
https://www.juniper.net/support/downloads のジュニパーネットワークス Web サイトからモジュールをダウンロードする
-
juniper Networks GitHub リポジトリからモジュールをダウンロードする(yang 用)https://github.com/Juniper/yang
-
ジュニパーネットワークス デバイス上のモジュールの生成
Junos OS リリース 17.1 以前では、Junos OS 設定用の YANG モジュールと、ジュニパーネットワークス Web サイトと GitHub に掲載されているコマンド階層で、Junos OS がリリースを実行しているすべてのデバイスのスキーマを定義しています。対照的に、ローカルデバイスで生成されたYANGモジュールは、ネイティブモジュールと、デバイスに追加された標準またはカスタムモジュールの両方のノードを含め、そのデバイスに固有のスキーマを定義します。
Junos OSリリース17.2以降、Junos YANGモジュールはデバイスファミリーに固有であり、各モジュールの名前空間には、モジュール内のスキーマが属するデバイスファミリーが反映されています。その結果、ジュニパーネットワークスの Web サイトに投稿され、特定のリリースの YANG モジュールを含む tar アーカイブには、デバイス ファミリーのモジュールごとに異なるディレクトリと、すべてのデバイス ファミリーに共通するモジュールの 共通 ディレクトリが含まれています。各ファミリー固有のディレクトリは、ディレクトリ名としてデバイスファミリー識別子を使用し、そのファミリー内のプラットフォームでサポートされている設定および運用コマンドモジュールが含まれています。デバイス ファミリー識別子は 、表 1 で定義されています。Junos OSリリース17.2を実行しているローカルデバイスで生成されたYANGモジュールは、そのデバイスに固有のスキーマを定義します。
Junos OSリリース17.4R1以降、ローカルデバイスで生成されたYANGモジュールには、デフォルトで、特定のデバイスファミリー内のすべてのデバイスで同一のファミリー固有のスキーマが含まれています。デバイス固有のモジュールを生成するには、 階層レベルで 設定ステートメントを[edit system services netconf yang-modules]
設定device-specific
します。
表 3 は、さまざまな Junos OS リリースでダウンロードされ、生成された YANG モジュールのスキーマの範囲をまとめたものです。
Junos OS リリース |
ダウンロードされたモジュールのスキーマのスコープ |
生成されたモジュールのスキーマのスコープ |
---|---|---|
17.1以前 |
すべてのデバイス |
デバイス |
17.2~17.3 |
デバイスファミリー |
デバイス |
17.4R1以降 |
デバイスファミリー |
デバイスファミリー |
Junos OS YANG モジュールをダウンロードまたは生成する方法の詳細については、「 ジュニパーネットワークス YANG モジュールを使用する」を参照してください。
Junos YANG モジュールの名前空間とプレフィックスについて
Junos OS リリース 17.1 以前では、Junos YANG モジュールは一意の識別子を使用して、各モジュールの名前空間を区別します。
namespace "http://yang.juniper.net/yang/1.1/module-id;
Junos OSリリース17.2R1以降、Junos YANGモジュールはデバイスファミリーに固有のものです。特定のリリースの異なるデバイスファミリーに対して異なるYANGモジュールをサポートするために、YANGモジュールは、識別子に加えて、モジュール名、デバイスファミリー、Junos OSリリース文字列を含む名前空間を使用します。例えば:
namespace "http://yang.juniper.net/yang/1.1/module-id/module-name/device-family/release";
Junos OS リリース 17.4R1 以降、名前空間は簡素化され、デバイス ファミリー、モジュール タイプ、および各モジュールに固有の識別子が含まれるようになり、モジュールの名前空間と他のモジュールの名前空間を区別します。
namespace "http://yang.juniper.net/device-family/type/identifier";
次の定義は、その変数が表示される名前空間のすべてのバージョンに適用されます。
device-family |
モジュール内のスキーマが属するデバイス ファミリーの識別子(例えば、 、 デバイス固有のスキーマを持つモジュールとファミリ固有のスキーマを持つモジュールは、両方とも名前空間で同じデバイス ファミリー識別子を使用します。
メモ:
共通モジュールは名前空間でデバイスファミリー識別子を |
identifier |
モジュールの名前空間と他のモジュールの名前空間を区別する文字列。 Junos 設定およびコマンド モジュールには、モジュール内のスキーマが属する設定またはコマンド階層の領域を示す識別子が含まれています。一般的なモジュールは、例えば |
module-id |
モジュールに固有の一意の識別子(例えば、 、 |
module-name |
そのファイルに含まれる YANG モジュールの名前(例: |
release |
モジュール内のスキーマがサポートされているJunos OSまたはJunos OS Evolvedリリースです。 |
type |
モジュールのタイプ。可能な値は次のとおりです。
|
表 4 は、さまざまなリリースの各モジュールの名前空間の URI とプレフィックス(モジュールの prefix
ステートメントで定義される)の概要を示しています。Junos OS リリース 17.2 以降、各運用コマンド モジュールのプレフィックスには、そのモジュールに含まれる RPC のコマンド階層エリアが反映されています。同様に、Junos OS リリース 17.4R1 以降、各設定 YANG モジュールのプレフィックスには、そのモジュールに含まれる設定ステートメント階層が反映されています。Junos YANG拡張およびタイプモジュールは、名前空間でデバイスファミリー識別子を使用 junos
しますが、モジュールはすべてのデバイスファミリーに共通です。
YANG モジュール |
リリース |
名前空間の URI |
プレフィックス |
---|---|---|---|
構成モジュール |
17.1以前 |
http://yang.juniper.net/yang/1.1/jc |
|
17.2~17.3 |
http://yang.juniper.net/yang/1.1/jc/configuration/device-family/release |
|
|
17.4R1以降 |
http://yang.juniper.net/device-family/conf/hierarchy |
|
|
運用コマンド モジュール |
17.1以前 |
http://yang.juniper.net/yang/1.1/jrpc |
|
17.2~17.3 |
http://yang.juniper.net/yang/1.1/jrpc/module-name/device-family/release |
hierarchy |
|
17.4R1以降 |
http://yang.juniper.net/device-family/rpc/hierarchy |
hierarchy |
|
モジュール拡張モジュール |
17.1以前 |
http://yang.juniper.net/yang/1.1/je/ |
|
17.2 以降 |
http://yang.juniper.net/yang/1.1/je/junos-extension/junos/release |
|
|
17.4R1以降 |
http://yang.juniper.net/junos/common/ddl-extensions |
|
|
ODL 拡張モジュール |
17.1以前 |
http://yang.juniper.net/yang/1.1/jodl |
|
17.2~17.3 |
http://yang.juniper.net/yang/1.1/jodl/junos-extension-odl/junos/release |
|
|
17.4R1以降 |
http://yang.juniper.net/junos/common/odl-extensions |
|
|
メタデータ注釈拡張モジュール |
22.2R1以降 |
http://yang.juniper.net/junos/jcmd |
jcmd |
タイプ モジュール |
17.4R1以降 |
http://yang.juniper.net/junos/common/types |
|
Junos OSリリース17.2以降、NETCONFセッションで [edit system services netconf]
ステートメントを設定rfc-compliant
し、設定データを要求すると、サーバーは対応するYANGモデルと同じ名前空間に要素のデフォルト<configuration>
名前空間を設定します。例えば:
<rpc> <get-config> <source> <running/> </source> </get-config> </rpc> ]]>]]> <nc:rpc-reply xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:junos="http://xml.juniper.net/junos/17.2R1/junos"> <nc:data> <configuration xmlns="http://yang.juniper.net/yang/1.1/jc/configuration/junos/17.2R1.13" junos:commit-seconds="1493761452" junos:commit-localtime="2017-05-02 14:44:12 PDT" junos:commit-user="user"> ... </configuration> </nc:data> </nc:rpc-reply> ]]>]]>
junos:command
。