Junos XML プロトコルを使用して設定データ内の要素をマージする
デフォルトでは、Junos XML プロトコル サーバーは、読み込まれた構成データを次のルールに従って候補構成に マージ します。(ルールは、設定のプライベート コピーや一時的な設定データベースのオープン インスタンスにも適用されますが、簡潔にするために、以下の議論は候補の設定のみを指します)。
候補内に存在するが、読み込まれた構成には存在しない構成要素(階層レベルまたは構成オブジェクト)は変更されません。
読み込まれたコンフィギュレーション内に存在し、候補内に存在しないコンフィギュレーション・エレメントが候補に追加されます。
両方の設定に構成要素が存在する場合、セマンティクスは次のようになります。
構成要素(子タグ要素で表される)の子ステートメントが候補に存在するが、読み込まれた設定には存在しない場合、変更されずに残ります。
読み込まれた設定に子ステートメントが存在するが、候補内に存在しない場合、子ステートメントは候補に追加されます。
子ステートメントが両方のコンフィギュレーションに存在する場合、読み込まれたコンフィギュレーションの値は候補内の値を置き換えます。
マージ モードは新しい構成要素のデフォルト モードであるため、アプリケーションはタグ要素内でタグ要素を<rpc>発行<load-configuration>するだけです。
<rpc>
<!-- For a file -->
<load-configuration url="file" [format="format"]/>
<!-- For a data stream -->
<load-configuration [format="format"]>
<!-- configuration data -->
</load-configuration>
</rpc>
および 属性のurl詳細については、 Junos XMLプロトコルセッションでの設定データのアップロードとフォーマットを参照してください。format
Junos XML 要素、書式設定された ASCII テキスト、または JSON 形式を使用する構成データのマージ モードを明示的に指定するには、このセクションの最後の例に示すように、タグに 属性<load-configuration>を含action="merge"めることができます。
Junos XML タグ要素を使用して構成にマージする要素を表す場合、アプリケーションには、 Junos XML プロトコルを使用した構成要素の作成、変更、削除で説明されている基本的なタグ要素が含まれます。要素のコンテナタグには属性は含まれません。子要素の値を追加または変更する場合、アプリケーションにはそれに対するタグ要素が含まれます。子が変更されずに残っている場合、読み込まれた設定に含める必要はありません。以下では、識別子タグ要素が と呼ばれます <name>。
<configuration>
<!-- opening tag for each parent of the element -->
<container-tag>
<name>identifier</name> <!-- if the element has an identifier -->
<!-- tag elements for other children, if any -->
</container-tag>
<!-- closing tag for each parent of the element -->
</configuration>
フォーマットされたASCIIテキストを使用する場合、 Junos XMLプロトコルを使用した構成要素の作成、変更、または削除で説明されているステートメントパスがアプリケーションに含まれます。前の演算子は含まれていませんが、要素の識別子がある場合は含まれません。子要素の値を追加または変更する場合、アプリケーションにはそれに対するタグ要素が含まれます。子が変更されずに残っている場合、読み込まれた設定に含める必要はありません。
<configuration-text>
/* statements for parent levels of the element */
element identifier {
/* child statements if any */
}
/* closing braces for parent levels of the element */
</configuration-text>
Junos OS リリース 16.1 以降、デバイスで JavaScript Object Notation(JSON)を使用してフォーマットされた設定データを読み込むことができます。JSON を使用して構成にマージする要素を表す場合、 Junos XML プロトコルを使用した構成要素の作成、変更、削除で説明されている基本的な JSON データがアプリケーションに含まれます。新しい要素または変更された要素をマージするために、JSON設定データに特定の操作属性を含める必要はありません。子要素の値を追加または変更する場合、アプリケーションにはそれに対する JSON データまたは子オブジェクトが含まれます。子が変更されずに残っている場合、読み込まれた設定に含める必要はありません。次の例では、要素の識別子を指定する JSON メンバーのフィールド名は"name"です。
<configuration-json>
{
"configuration" : {
/* JSON objects for parent levels of the element */
"container-tag" : {
"object" : [
{
"name" : "identifier",
"statement-name" : "statement-value", # if any
/* additional data and child objects */ # if any
}
],
/* data and child objects */ # if any
}
/* closing braces for parent levels of the element */
}
}
</configuration-json>
設定モードコマンドを使用して新しい要素をマージする場合、このセクションの最後の例に示すように、 および 属性<load-configuration>がタグに含まれます。action="set" format="text"アプリケーションには、 set コマンド、要素へのステートメントパス、要素の識別子(要素がある場合)が含まれます。子要素の値を追加または変更する場合、アプリケーションには、 コマンドに子要素またはステートメントが含まれます。子が変更されずに残っている場合は、含める必要はありません。
<configuration-set>
set statement-path-to-element element identifier child-statements
</configuration-set>
以下の例は、設定内の 階層レベルで so-3/0/0 と呼ばれる新しいインターフェイスでマージする [edit interfaces] 方法を示しています。この情報は、Junos XML タグ要素(デフォルト)として提供されます。
次の例では、フォーマットされたASCIIテキストを使用して、同じ新しい インターフェイスを定義する方法を示しています。
以下の例では、JSON 設定データを使用して同じインターフェイスを定義する方法を示しています。
<rpc>
<load-configuration format="json">
<configuration-json>
{
"configuration" : {
"interfaces" : {
"interface" : [
{
"name" : "so-3/0/0",
"unit" : [
{
"name" : 0,
"family" : {
"inet" : {
"address" : [
{
"name" : "10.0.0.1/8"
}
]
}
}
}
]
}
]
}
}
}
</configuration-json>
</load-configuration>
</rpc>
<rpc-reply xmlns:junos="http://xml.juniper.net/junos/16.2R2/junos">
<load-configuration-results>
<load-success/>
</load-configuration-results>
</rpc-reply>
以下の例では、設定モードコマンドを使用して同じインターフェイスを定義する方法を示しています。