Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

例:コミットスクリプトを使用して、永続的および一時的な設定変更を生成する

例:永続的な変更の生成

Junos OSコミットスクリプトを使用すると、ユーザーは、独自のプラクティスやポリシーに従って設定の検証プロセスをカスタマイズし、コミットプロセス中にカスタム設定ルールを適用できます。この例では、 ステートメントが設定にまだ含まれていない場合にSONET/SDHインターフェイスの設定に ステートメントを追加family mplsする永続的な変更を生成するコミットスクリプトを示しています。インターフェイス上でMPLSプロトコルファミリーを明示的に設定しない場合、MPLSアプリケーションのインターフェイスは有効になっていません。

要件

この例では、以下のハードウェアとソフトウェアのコンポーネントを使用しています。

  • 1 つ以上の SONET/SDH インターフェイスを持つ Junos OS を実行するデバイス。

  • Python スクリプトを使用する場合、Junos OS リリース 16.1R3 以降のリリース。

概要とコミット スクリプト

この例のコミットスクリプトは、論理インターフェイスが設定されていても ステートメントが設定されていないすべてのSONET/SDHインターフェイスを family mpls 検索します。これらのインターフェイスの場合、スクリプトは、 family mpls 階層レベルで持続的な変更として、 ステートメントをインターフェイス設定に [edit interfaces interface-name unit logical-unit-number] 追加します。このスクリプトは、SLAX、XSLT、Python で示されています。

コミット スクリプトの SLAX バージョンと XSLT バージョンでは、junos.xsl インポート ファイルにjcs:emit-change含まれるヘルパー テンプレートであるテンプレートを使用して永続的な変更が生成されます。テンプレートのjcs:emit-changeパラメーターはtag省略され、スクリプトは永続的な変更として変更を発行するように指示します。テンプレートのパラメーターにはcontentjcs:emit-change永続的な変更として追加する設定ステートメントが含まれています。messageテンプレートのjcs:emit-changeパラメーターには、CLIに表示される警告メッセージが含まれています。設定が変更されたことを通知します。

コミット スクリプトの Python バージョンでは、モジュールからインポートされた関数を jcs.emit_change() 使用して永続的な変更が jcs 生成されます。Python スクリプトは、定位置引数「変更」を渡すことで、これが永続的な変更であることを示しています。

XSLT 構文

SLAX 構文

Python 構文

構成

手順

手順

スクリプトをダウンロード、有効化、テストするには、

  1. スクリプトをテキスト ファイルにコピーし、mpls.xsl、mpls.slax、または mpls.py というファイルに名前を付け、デバイス上の /var/db/scripts/commit/ ディレクトリにコピーします。

    メモ:

    符号なしPythonスクリプトは、Junos OS super-user ログインクラスのルートまたはユーザーのいずれかが所有する必要があり、ファイルの書き込み権限を持つことができるのはファイル所有者だけです。

  2. 設定モードで、 階層レベルで ステートメントとスクリプトファイル名を[edit system scripts commit]設定fileします。

  3. スクリプトが Python で記述されている場合は、符号なし Python スクリプトの実行を有効にします。

    メモ:

    Python 3を language python3 使用してPythonスクリプトを実行するように ステートメントを設定するか、 ステートメントで language python Python 2.7を使用してPythonスクリプトを実行するように設定します。詳細については、 言語を参照してください。

  4. コミット スクリプトが持続的な変更を正しく生成することをテストするには、設定に変更を引き起こす条件が含まれていることを確認します。このスクリプトをテストするには、少なくとも 1 つの SONET/SDH インターフェイスの [edit interfaces so-fpc/pic/port unit logical-unit-number] 階層レベルに ステートメントが含まれていないことを確認family mplsします。

  5. コマ ンドを commit check 発行して、コミット スクリプト処理のトレースをプレビューし、スクリプトが候補構成に永続的な変更を追加することを確認します。コマンドは commit check 、コミットする前に設定の構文を検証しますが、変更はコミットされません。

    この例のコミット スクリプトは、変更するたびにメッセージを生成します。コマンドを commit check 使用してこれらのメッセージをプレビューし、スクリプトが適切なインターフェイスの ステートメントで設定を family mpls 更新するかどうかを確認します。

    コマンドを commit check | display xml 発行して、XML 形式のバージョンのメッセージを表示します。サンプル出力は、コミット操作中にスクリプトが so-2/3/4.0 インターフェイス設定に ステートメントを追加 family mpls することを示しています。

  6. コミット スクリプト処理の詳細なトレースを表示するには、 コマンドを commit check | display detail 発行します。サンプル出力では、コミット操作中にコンフィギュレーションに読み込まれる持続的な変更が1つあります。

  7. スクリプトが正しい変更を生成することを確認した後、 コマンドを commit 発行してコミット操作を開始し、スクリプトを実行します。

検証

設定の検証

目的

正しい変更が設定に統合されていることを確認します。

アクション

コミット操作を実行した後、 設定モードコマンドを発行して設定を show interfaces 表示します。MPLS プロトコル ファミリーがスクリプトを実行する前に 1 つ以上の SONET/SDH インターフェイスで有効になっていない場合、出力は次のようになります。

例:一時的な変更の生成

この例では、コミットスクリプトを使用して、IPv4プロトコルファミリーが有効になっているすべてのSONET/SDHインターフェイスでPPPカプセル化を設定します。一時的な変更に応じて変更が追加されます。

要件

この例では、以下のハードウェアとソフトウェアのコンポーネントを使用しています。

  • 1 つ以上の SONET/SDH インターフェイスを持つ Junos OS を実行するデバイス。

  • Python スクリプトを使用する場合、Junos OS リリース 16.1R3 以降のリリース。

概要とコミット スクリプト

この例のコミットスクリプトは、IPv4プロトコルファミリーが有効になっているすべてのSONET/SDHインターフェイスを設定で検出し、 ステートメントをインターフェイス設定に追加 encapsulation ppp します。コミットスクリプトは一時的な変更を生成し、チェックアウト設定に変更を追加しますが、候補設定には追加されません。このスクリプトは、SLAX、XSLT、Python で示されています。

コミット スクリプトの SLAX バージョンと XSLT バージョンでは、junos.xsl インポート ファイルに含まれるヘルパー テンプレートであるテンプレートを使用jcs:emit-changeして一時変更が生成されます。テンプレートのjcs:emit-changeパラメーターの値transient-changetag、スクリプトに永続的な変更ではなく一時的な変更として変更を出力するように指示します。contentテンプレートのパラメーターには、jcs:emit-change一時変更として追加される設定ステートメントが含まれています。

コミット スクリプトの Python バージョンでは、モジュールからインポートされた関数を jcs.emit_change() 使用して一時変更が jcs 生成されます。Python スクリプトは、これは一時的な変更であり、定位置引数 「一時変更」を渡すことによって示します。

XSLT 構文

SLAX 構文

Python 構文

構成

手順

手順

スクリプトをダウンロード、有効化、テストするには、

  1. スクリプトをテキスト ファイルにコピーし、 encap-ppp.xslencap-ppp.slax、または encap-ppp.py ファイルに名前を付け、デバイス上の /var/db/scripts/commit/ ディレクトリにコピーします。

    メモ:

    符号なしPythonスクリプトは、Junos OS super-user ログインクラスのルートまたはユーザーのいずれかが所有する必要があり、ファイルの書き込み権限を持つことができるのはファイル所有者だけです。

  2. 設定モードで、 階層レベルで ステートメントとスクリプトファイル名を[edit system scripts commit]設定fileします。

  3. ステートメントを allow-transients 設定して、コミットスクリプトがチェックアウト設定に一時的な変更をロードできるようにします。

  4. スクリプトが Python で記述されている場合は、符号なし Python スクリプトの実行を有効にします。

    メモ:

    Python 3を language python3 使用してPythonスクリプトを実行するように ステートメントを設定するか、 ステートメントで language python Python 2.7を使用してPythonスクリプトを実行するように設定します。詳細については、 言語を参照してください。

  5. コミット スクリプトが一時変更を正しく生成することをテストするには、設定に変更を引き起こす条件が含まれていることを確認します。少なくとも1つのSONET/SDHインターフェイスの [edit interfaces so-fpc/pic/port] 階層レベルに ステートメントが含まれていないことをencapsulation ppp確認します。

  6. コマ ンドを commit check 発行して、コミット スクリプト処理のトレースをプレビューし、スクリプトが一時的な変更をチェックアウト構成に追加することを確認します。コマンドは commit check 、コミットする前に設定の構文を検証しますが、変更はコミットされません。

    コマ ンドを commit check | display detail 発行して、コミット スクリプト処理の詳細なトレースを表示します。サンプル出力では、チェックアウト設定に読み込まれる一時的な変更が2つあります。

  7. スクリプトが正しい変更を生成することを確認した後、 コマンドを commit 発行してコミット操作を開始し、スクリプトを実行します。

検証

設定の検証

目的

正しい変更がチェックアウト構成に統合されていることを確認します。IPv4プロトコルファミリーが有効になっているSONET/SDHインターフェイスが1つ以上ある場合、インターフェイス階層にencapsulation ppp一時的な変更として追加されたステートメントを確認する必要があります。

アクション

一時的な変更を含む設定を表示するには、 設定モードコマンドを show interfaces | display commit-scripts 発行します。コマンドは show interfaces | display commit-scripts 、一時変更によって生成されるステートメントを含め、設定内のすべてのステートメントを表示します。IPv4プロトコルファミリーが有効になっているSONET/SDHインターフェイスが1つ以上ある場合、出力は次のようになります。

トラブルシューティング

コミット エラーのトラブルシューティング

問題

CLI は無効な一時変更エラーを生成し、コミットは失敗します。

ソリューション

コミットスクリプトが allow-transients チェックアウト設定に一時的な変更をロードできるようにするには、 階層レベルで [edit system scripts commit] ステートメントを設定する必要があります。

一時的な変更を許可するために、以下のステートメントを設定します。