例:コミットスクリプトで継承前の候補設定を取得する
この例では、通常またはプライベートの設定セッションの継承前の候補設定を取得するコミットスクリプトを作成する方法を示します。
要件
Junos OS リリース 12.2 以降を実行するルーティング、スイッチング、またはセキュリティ デバイス。
概要
Junos OSでは、 候補コンフィギュレーション がコミットされると、アクティブな各コミットスクリプトによって検査されます。コミットスクリプトの通常の入力は、継承後の候補コンフィギュレーションで、すべてのコンフィギュレーショングループ値がターゲットに継承され、コンフィギュレーションの非アクティブ部分が削除されています。
コミットスクリプトは、デフォルトで受け取る継承後の設定ではなく、継承前の候補設定へのアクセスを必要とすることがあります。通常の構成セッションでは通常の候補データベースを使用し、プライベート構成セッションでは専用のプライベート候補データベースを使用するため、候補データベースの場所はセッション・タイプによって異なります。
コミットスクリプト内で、 属性を使用してdatabase="candidate"
リモートプロシージャコール(RPC)を呼び出す<get-configuration>
と、通常の継承前の候補設定が取得されます。RPC には<get-configuration>
、database-path
通常構成セッションまたはプライベート構成セッションの継承前構成データベースの場所を指定するために使用される属性もあります。この属性は、 database
属性の代替であり、ロードするデータベース・ファイルを示します。コミットスクリプトは、 <get-configuration>
属性を使用してdatabase-path
RPCを呼び出し、そのセッションに固有の継承前の候補設定を取得できます。
グローバル変数には、 $junos-context
セッションの継承前の候補コンフィギュレーションの場所を格納する要素が含まれています commit-context/database-path
。通常の設定セッションでは、 要素には <database-path>
通常の候補データベースの場所が含まれます。
<junos-context> <commit-context> <database-path>/var/run/db/juniper.db</database-path> </commit-context> </junos-context>
プライベート構成セッションでは、 <database-path>
エレメントにはセッション固有のプライベート候補データベースの場所が含まれます。例えば:
<junos-context> <commit-context> <commit-private/> <database-path>/var/run/db/private/juniper-1396.db</database-path> </commit-context> </junos-context>
そのセッションに固有の継承前の候補設定を取得するコミットスクリプトを作成するには、コミットスクリプトにRPCを含め <get-configuration>
、属性を <database-path>
に設定します $junos-context/commit-context/database-path
。通常の構成セッションでは、コミットスクリプトが通常の継承前の候補構成を取得し、プライベート構成セッションの場合、コミットスクリプトはプライベートの継承前の候補構成を取得します。
コミットスクリプトの タグに <get-configuration>
と の両方のdatabase-path
属性が含まれている場合database
、 属性がdatabase
優先されます。
構成
コミットスクリプトの設定
手順
そのセッションに固有の継承前の候補設定を取得するコミットスクリプトを作成するには:
テキスト エディターで、コミット スクリプトのボイラープレートをファイルに追加します。
version 1.0; ns junos = "http://xml.juniper.net/junos/*/junos"; ns xnm = "http://xml.juniper.net/xnm/1.1/xnm"; ns jcs = "http://xml.juniper.net/junos/commit-scripts/1.0"; import "../import/junos.xsl"; match configuration { }
属性を に設定した
$junos-context/commit-context/database-path
RPCdatabase-path
を格納する<get-configuration>
変数を作成します。var $rpc = <get-configuration database-path=$junos-context/commit-context/database-path>;
RPC を呼び出し、
<get-configuration>
結果の設定を変数に格納するステートメントを追加します。var $config = jcs:invoke( $rpc );
-
通常の XPath 構成を使用して、継承前の候補構成で目的の階層レベルとステートメントを参照します。次に例を示します。
var $hostname = $config/system/host-name;
コミットプロセス中にカスタム設定ルールを適用するために必要なステートメントを含めます。
スクリプトをデバイスの /var/run/scripts/commit ディレクトリにコピーします。
設定モードで、コミットスクリプトを有効にするように ステートメントを設定します
file
。[edit system scripts commit] user@R1# set file script-name.slax
コマンドを発行して、
commit
設定をコミットします。[edit] user@R1# commit
コミット スクリプトは、コミット操作中に実行されます。
結果
version 1.0; ns junos = "http://xml.juniper.net/junos/*/junos"; ns xnm = "http://xml.juniper.net/xnm/1.1/xnm"; ns jcs = "http://xml.juniper.net/junos/commit-scripts/1.0"; import "../import/junos.xsl"; match configuration { var $rpc = <get-configuration database-path=$junos-context/commit-context/database-path>; var $config = jcs:invoke( $rpc ); ... <!-- commit script rules --> }