Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Ansible Playbook の Python (JSNAPy) で Junos Snapshot Administrator を使用する

概要 Ansibleプレイブックの一部としてJSNAPyテストを実行し、Junosデバイスのランタイム環境のスナップショットをキャプチャして監査します。

PythonのJunos® Snapshot Administrator(JSNAPy)を使用すると、ネットワークのJunosデバイスのランタイム環境のスナップショットをキャプチャして監査できます。デバイスの設定と動作ステータスを取得して検証し、デバイスに対する変更を検証できます。ジュニパーネットワークスは、Ansibleプレイブックの一部として、Junosデバイスに対してJSNAPyテストを実行できるAnsibleモジュールを提供しています。 表 1 に、使用可能なモジュールの概要を示します。

表1: JSNAPyモジュール

コンテンツセット

モジュール名

juniper.device 徴収

jsnapy

Juniper.junos 役割

juniper_junos_jsnapy

モジュールを使用するには、Ansible制御ノードにPythonのJunosスナップショットアドミニストレータをインストールする必要があります。JSNAPy の設定ファイルとテスト ファイルの作成に関するインストール手順と情報については、 Python ドキュメントの Junos スナップショット アドミニストレータを参照してください。

手記:

リリース 2.0.0 以降 Juniper.junosjuniper_junos_jsnapy モジュールはモジュールの機能を置き換えます junos_jsnapy

次のセクションでは、Ansible プレイブックでモジュールを使用する方法について説明します。

モジュールの概要

jsnapyおよびjuniper_junos_jsnapyモジュールを使用すると、コマンドラインでJSNAPyを使用して実行できるのと同じJSNAPy機能の多くをAnsibleプレイブックから実行できます。

  • ランタイム環境のスナップショットのキャプチャーと保存

  • 2 つのスナップショットの比較

  • スナップショットをキャプチャしてすぐに評価する

モジュールでは、action引数と または test_files 引数のいずれかconfig_fileを指定する必要があります。引数はaction、実行する JSNAPy アクションを指定します。表 2 に、有効なaction値と同等の JSNAPy コマンドの概要を示します。

表 2: jsnapy と juniper_junos_jsnapy アクションの引数値

アクション値

形容

同等の JSNAPy コマンド

check

指定されたテスト ケースに基づいて 2 つの既存のスナップショットを比較するか、テスト ケースが指定されていない場合は、スナップショットをノードごとに比較します。

jsnapy --check

snap_post

指定されたデバイスで変更を行った後、テスト ファイルで指定されたコマンドまたは RPC のスナップショットを取得します。

jsnapy --snap

snap_pre

特定のデバイスに変更を加える前に、テスト ファイルで指定されたコマンドまたは RPC のスナップショットを取得します。

jsnapy --snap

snapcheck

テストファイルで指定されたコマンドまたはRPCのスナップショットを取得し、テストケースの事前定義された基準に対してスナップショットを即座に評価します。

jsnapy --snapcheck

コマンド・ラインでJSNAPyを実行すると、JSNAPyは構成ファイルの hosts セクションで指定されたホストに対して要求されたアクションを実行します。対照的に、Ansibleモジュールは、プレイブックで定義されたAnsibleインベントリグループ内のホストで要求されたアクションを実行します。その結果、モジュールはセクションを無視して hosts 構成ファイルを参照するか、1 つ以上のテスト ファイルを直接参照できます。

したがって、 および juniper_junos_jsnapy モジュールは、action引数に加えて、jsnapy特定のアクションに使用するJSNAPy設定ファイルまたはJSNAPyテストファイルを指定するために、 または test_files 引数のいずれかを必要としますconfig_file表 3 に、 config_file および test_files の引数の概要を示します。

表 3: jsnapy および juniper_junos_jsnapy ファイル引数

モジュール引数

価値

詳細な情報

config_file

JSNAPy 設定ファイルへの絶対または相対ファイル パス。

パスが相対パスの場合、モジュールは次の場所にある構成ファイルを指定された順序でチェックします。

  • Ansibleプレイブックディレクトリ

  • dir 引数ディレクトリ (指定されている場合)

  • /etc/jsnapy/testfiles ディレクトリ (引数を dir 省略した場合のみ)

構成ファイルが相対ファイル・パスを使用してテスト・ファイルを参照している場合、モジュールはまずプレイブック・ディレクトリー内のテスト・ファイルをチェックし、次にデフォルト testfiles ・ディレクトリー内のテスト・ファイルをチェックしますが、これは JSNAPy リリースと環境によって異なります。

test_files

JSNAPy テスト ファイルへの絶対または相対ファイル パス。これは、単一のファイルパスまたはファイルパスのリストにすることができます。

相対パスを指定するテスト ファイルごとに、モジュールは次の場所にあるファイルを指定された順序でチェックします。

  • Ansibleプレイブックディレクトリ

  • dir 引数ディレクトリ (指定されている場合)

  • /etc/jsnapy/testfiles ディレクトリ (引数を dir 省略した場合のみ)

引数test_filesと引数にはconfig_file、絶対ファイル パスまたは相対ファイル パスを指定できます。相対ファイル パスを使用する場合は、オプションで module 引数を含めてdir、ファイルが存在するディレクトリを指定できます。またはtest_files引数がconfig_file相対ファイルパスを使用する場合、モジュールは、引数が存在する場合でもdir、最初にAnsibleプレイブックディレクトリの下のファイルをチェックします。ファイルが Playbook ディレクトリの下に存在しない場合、モジュールは引数ディレクトリが指定されている場合はその下dirをチェックし、引数が省略されている場合は dir /etc/jsnapy/testfiles ディレクトリの下をチェックします。ファイルが見つからない場合、プレイブックはエラー メッセージを生成します。

次のサンプル プレイブックは、snap_preconfiguration_interface_status.yaml 構成ファイルを使用してアクションを実行します。構成ファイルがプレイブックディレクトリに存在しない場合、モジュールはユーザーのホームディレクトリの jsnapy/testfiles サブディレクトリにあるファイルをチェックします。

手記:

Python リリース 1.3.0 の Junos Snapshot Administrator 以降、設定ファイルとテスト ファイルのデフォルトの場所は ~/jsnapy/testfiles です。ただし、仮想環境内またはそれ以前のリリースのデフォルトの場所は /etc/jsnapy/testfiles です。

モジュールは、セクションを含む hosts 構成ファイルを参照している場合でも、Ansibleプレイブックで指定されたホストで要求されたアクションを実行します。エラーが発生し、JSNAPy テストの実行に失敗した場合、モジュールは失敗を報告します。1つ以上のJSNAPyテストが失敗した場合、失敗は報告 されません 。JSNAPy テスト結果を確認するには、モジュールの応答を登録し、モジュールを使用して assert 応答で期待される結果を検証します。

Python の Junos Snapshot Administrator は、その操作に関する情報をデフォルトで /var/log/jsnapy/jsnapy.log ファイルに記録します。および juniper_junos_jsnapy モジュールにはjsnapy、オプションで、logfile特定のタスクの情報が記録されるAnsible制御ノード上の書き込み可能ファイルへのパスを指定する 引数を含めることができます。ファイルに記録される情報のレベルは、Ansible の詳細レベルとデバッグ オプションによって決まります。デフォルトでは、重大度レベルが WARNING 以上のメッセージのみがログに記録されます。重大度レベル INFO または重大度レベル DEBUG 以上のメッセージをログに記録するには、それぞれ または -v -vv コマンドライン オプションを使用してプレイブックを実行します。

AnsibleプレイブックでJSNAPyテストを実行すると、コールバックプラグインを有効に jsnapy して、失敗したJSNAPyテストの情報をキャプチャして要約できます。コールバックプラグインを有効にするには、 ステートメントをAnsible構成ファイルに追加します callback_whitelist = jsnapy 。詳細については、「 jsnapy コールバックプラグインを有効にする」を参照してください。

スナップショットの取得と比較

JSNAPyを使用すると、変更前と変更後のネットワークJunosデバイスのランタイム環境のスナップショットをキャプチャし、スナップショットを比較して、予想される変更を確認したり、予期しない問題を特定したりできます。および jsnapy juniper_junos_jsnapy Ansibleモジュールを使用すると、Ansibleプレイブックの一部としてJSNAPyスナップショットを取得して比較できます。モジュールは、各ホストの各スナップショットを、あらかじめ決められたファイル名を使用して、デフォルトのJSNAPyスナップショットディレクトリ内の個別のファイルに保存します。出力ファイルの詳細については、「 jsnapy および juniper_junos_jsnapy モジュール出力について」を参照してください。

変更を行う前に 1 つ以上のデバイスのベースライン スナップショットを取得するには、モジュールの引数snap_preaction に設定し、構成ファイルまたは 1 つ以上のテスト ファイルを指定します。

次のプレイブックは、Ansibleインベントリグループ内の各デバイスのPREスナップショットを保存します。このタスクは、~/jsnapy/testfiles ディレクトリ内の configuration_interface_status.yaml 構成ファイルを参照し、プレイブック ディレクトリ内の jsnapy_tests.log ファイルにメッセージを記録します。

変更の実行後に 1 つ以上のデバイスのスナップショットを取得するには、モジュールの引数snap_postaction に設定し、構成ファイルまたは 1 つ以上のテスト ファイルを指定します。

次のプレイブックは、Ansibleインベントリグループ内の各デバイスのPOSTスナップショットを保存します。このタスクは、~/jsnapy/testfiles ディレクトリ内の同じ configuration_interface_status.yaml 構成ファイルを参照し、プレイブック ディレクトリ内の jsnapy_tests.log ファイルにメッセージを記録します。

またはjuniper_junos_jsnapyモジュールがjsnapyアクションまたはsnap_postアクションを実行するとsnap_pre、それぞれ「PRE」または「POST」タグを含む自動生成されたファイル名を使用して、各ホストの各スナップショットを個別のファイルに保存します。スナップショットとPOSTスナップショットを比較PREして更新をすばやく確認したり、変更によって発生した可能性のある問題を特定したりするには、モジュールの引数checkaction に設定し、スナップショットの取得に使用したのと同じ構成ファイルまたはテスト ファイルを指定します。

モジュールがアクションを実行すると check 、各デバイスの各テストの既存の PRE スナップショットと POST スナップショットが比較され、テスト ファイルのセクションで定義された tests: 条件に対して評価されます。テスト・ファイルでテスト・ケースが定義されていない場合、JSNAPy はスナップショットをノードごとに比較します。テスト結果を確認するには、モジュールの応答を登録し、モジュールを使用して assert 応答で予想される結果を検証します。

次のプレイブックでは、Ansibleインベントリグループ内のすべてのデバイスに対して以前に実行された snap_pre スナップショットと snap_post アクションに対して取得されたスナップショットを比較します。結果は、構成ファイルで参照されているテスト ファイル内の条件を使用して評価されます。プレイブックは、モジュールの応答を 'test_result' として登録し、モジュールを使用して assert 、指定されたデバイスですべてのテストに合格したことを確認します。

プレイブックを実行すると、アサーションによってテストに失敗したデバイスをすばやく特定できます。

スナップチェック操作の実行

JSNAPyを使用すると、JSNAPyテストファイルで指定されたコマンドまたはRPCのスナップショットを取得し、テストケースで事前定義された基準に対してスナップショットを即座に評価できます。および jsnapy juniper_junos_jsnapy Ansibleモジュールを使用すると、Ansibleプレイブックの一部としてJSNAPyスナップチェック操作を実行できます。

スナップショットを取得し、テスト ファイルのセクションで事前に定義された一連の条件tests:に基づいてすぐに評価するには、モジュールの引数snapcheckaction に設定し、構成ファイルまたは 1 つ以上のテスト ファイルを指定します。テスト結果を確認するには、モジュールの応答を登録し、モジュールを使用してassert応答で予想される結果を検証します。

たとえば、次のプレイブックでは、Ansibleインベントリグループ内のデバイスごとに、コマンドまたはRPCごとに個別のスナップショットをテストファイルに保存し、モジュールの応答を登録し、assertモジュールを使用して、テストファイルで定義されているすべてのテストがそのデバイスで合格したことを確認します。

jsnapy と juniper_junos_jsnapy モジュール出力について

または juniper_junos_jsnapy モジュールsnap_prejsnapysnap_post、または snapcheck のアクションを実行すると、スナップショットは JSNAPy snapshots ディレクトリに自動的に保存されます。モジュールは、別の場所を指定するようにJSNAPy設定ファイルを変更しない限り、デフォルトのJSNAPyディレクトリを使用します。このモジュールは、Ansibleインベントリ グループ内の各デバイスで実行されるコマンドまたはRPCごとに個別のファイルを作成します。表 4 に、引数の各値に対するスナップショット ファイルのファイル名の概要を示しますaction

手記:

Python リリース 1.3.0 の Junos Snapshot Administrator 以降、JSNAPy テスト ファイルとスナップショットのデフォルト ディレクトリは、それぞれ ~/jsnapy/testfiles~/jsnapy/snapshot です。ただし、仮想環境内またはそれ以前のリリースのデフォルトディレクトリは、 /etc/jsnapy/testfiles および /etc/jsnapy/snapshot です

表4: JSNAPy 出力ファイル名

action 価値

出力ファイル

snap_pre

hostname_プレ__hashcommandformat

snap_post

hostname_投稿_hashcommandformat

snapcheck

hostname_snap_temp_hash_commandformat
又は
hostname_プレ__hashcommandformat

どこ:

  • hostname- コマンドまたは RPC が実行されるデバイスのホスト名。

  • (プレ|投稿 |snap_temp) - アクションを識別するタグ。この操作では snapcheckPRE 現在のリリースでは タグが使用されています。それ以前のリリースでは、 snap_temp というタグが使用されています。

  • hash- および kwargs キーを含むrpcテスト ファイルから生成されたkwargsハッシュ。

    テストファイルが同じRPCを使用するが異なる引数を含み、RPCが同じホストで実行される場合、ハッシュはそのような場合に一意の出力ファイル名を保証します。テスト ファイルでキーが定義され command ている場合、またはテスト ファイルでキーが定義され rpc ていてもキーが含まれていない kwargs 場合、ハッシュは省略されます。

  • command- 管理対象デバイスで実行されたコマンドまたは RPC。モジュールは、コマンドまたはRPC名の空白と特殊文字をアンダースコア(_)に置き換えます。

  • format- 出力の形式( xmlなど)。

手記:

およびjuniper_junos_jsnapyモジュールはjsnapy、ホスト名とコマンドまたはRPCに基づいて、特定のアクションのスナップショットファイル名のみを区別します。その結果、モジュールが同じコマンドまたはRPCを定義するテストファイルを使用して同じアクションに対して同じデバイス上でスナップショットを取得すると、モジュールは同じファイル名のスナップショットを生成し、新しいファイルが古いファイルを上書きします。

例えば、デバイス dc1a.example.net および dc1b.example.net で および コマンドを実行するshow chassis fpcshow interfaces terseテストファイルをモジュールに含めaction: "snap_pre"て参照する場合、結果ファイルは次のようになります。

モジュールにデバイス dc1a.example.net の項目interface_name: lo0を使用して kwargs RPC を実行するget-interface-informationテスト ファイルが含まれaction: "snap_post"、参照されている場合、結果のファイルは次のようになります。

スナップショット ファイルの生成に加えて、 jsnapy モジュール juniper_junos_jsnapy とモジュールはモジュール応答で次のキーを返すこともできます。

  • action- モジュールによって実行される JSNAPy アクション。

  • changed- デバイスの状態が変化したかどうかを示します。JSNAPy は状態についてのみ報告するため、値は常に falseです。

  • failed- プレイブック タスクが失敗したかどうかを示します。

  • msg- JSNAPy テスト結果。

jsnapyコールバックプラグインを有効にする

Junosデバイスに対してJSNAPyテストを実行し、1つ以上のテストが失敗した場合、出力が広範囲に及ぶと、失敗したテストを特定して抽出することが困難な場合があります。コールバックプラグインを使用すると jsnapy 、失敗したJSNAPyテストの情報を簡単に抽出して要約できます。コールバックプラグインを有効に jsnapy し、JSNAPyテストを含むプレイブックを実行すると、プラグインはプレイブック PLAY RECAPの後に失敗したJSNAPyテストの情報を要約します。

コールバックプラグインは jsnapy デフォルトでは有効になっていません。コールバックプラグインを有効にするには jsnapy 、 ステートメントをAnsible構成ファイルに追加します callback_whitelist = jsnapy

コールバックプラグインを有効に jsnapy してプレイブックを実行すると、プラグインは失敗したJSNAPyテストを人間が読める形式で要約します。例えば:

例:Ansible を使用した JSNAPy スナップチェック操作の実行

この jsnapy モジュールを使用すると、Ansibleプレイブックの一部としてJunosデバイスに対してJSNAPyテストを実行できます。この例では、モジュールを使用して jsnapysnapcheck 特定の設定変更を適用した後のJunosデバイスの動作状態を検証するアクションを実行します。

必要条件

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

  • 実行中のAnsible制御ノード:

    • Python 3.7 以降

    • コレクションがインストールされたAnsible2.10以降juniper.device

    • Junos PyEZ リリース 2.6.0 以降

    • Python リリース 1.3.6 以降の Junos Snapshot Administrator

Ansibleプレイブックを実行する前に、以下が完了していることを確認してください。

  • SSH経由のNETCONFが有効で、適切な権限で設定されたユーザーアカウントを備えたJunosデバイス

  • Ansible制御ノードとJunosデバイスで適切なユーザーに対して構成されたSSH公開/秘密鍵のペア

  • 必要なホストが定義されている既存のAnsibleインベントリ ファイル

概要

この例では、Ansibleプレイブックが3台のJunosデバイスでBGPピアリングセッションを設定し、モジュールを使用して jsnapy 各ネイバーアドレスに対してBGPセッションが確立されていることを確認します。プレイブックは、デバイスでセッションが確立されていることを検証すると、新しい構成のコミットを確認します。プレイブックでコミットが確認されない場合、Junos デバイスは自動的に以前にコミットされた設定にロールバックします。Ansibleプロジェクトでは、プレイブックのグループ変数とホスト変数をそれぞれとディレクトリで group_vars 定義します host_vars

プレイブックには 2 つのプレイがあります。最初のプレイである は、 Load and commit BGP configuration設定を生成してアセンブルし、デバイスに設定を読み込み、コミット確認済みの操作を使用してコミットします。構成が更新されると、1 つのハンドラーに通知されます。このプレイでは、次のタスクが実行されます。

Remove build directory

指定したデバイスの既存のビルド ディレクトリを削除します (存在する場合)。

Create build directory

指定されたデバイスの新しい空のビルドディレクトリを作成します。

Build BGP configuration

templateモジュールを Jinja2 テンプレートとホスト変数と共に使用して、指定されたデバイスの BGP 設定をレンダリングし、デバイスのビルド ディレクトリ内のファイルに保存します。

Assemble configuration parts

assembleモジュールを使用して、デバイスのビルドディレクトリにあるファイルからデバイス構成ファイルをアセンブルします。

この例では、BGP 構成ファイルのみが存在するため、結果の構成ファイルは前のタスクでレンダリングされた BGP 構成ファイルと同じです。後で新しいタスクを追加して他のテンプレートから追加の構成ファイルを生成すると、 assemble モジュールはすべてのファイルを1つの構成に結合します。

Load and commit config, require confirmation

設定を Junos デバイスに読み込み、コミットを恒久的なものにするには明示的な確認が必要な操作を使用して commit confirmed 設定をコミットします。このタスクが構成を変更すると、プレイブックの実行を指定された時間一時停止するハンドラーにも通知され、2 番目のプレイが実行される前に BGP ピアが接続を確立できるようになります。

要求された設定がデバイスにすでに存在する場合、 config モジュールは設定をロードしてコミットしません。この場合、モジュールは changed: falseを返すため、ハンドラーに通知しません。

2つ目の再生では、 Verify BGPは、JSNAPyテストファイル内のテストを使用して各デバイス上でJSNAPy snapcheck 操作を実行し、すべてのテストに合格した場合にコミットを確認します。このプレイでは、次のタスクが実行されます。

Execute snapcheck

JSNAPy snapcheck 操作を実行します。この場合は、デバイスのネイバーごとに BGP セッションが確立されていること、およびダウンしているピアがないことを検証します。

この例では、プレイブックは、引数を test_files JSNAPyテストファイルのリストと等しく設定することにより、JSNAPyテストファイルを直接参照します。引数は dir 、テスト ファイルが格納されるディレクトリを指定します。

Confirm commit

最初のプレイブック プレイで設定が更新され、すべての JSNAPy テストに合格した場合に、前のコミット操作を確認するコミット チェック操作を実行します。プレイブックで設定が更新されても、コミットが確認されない場合、Junos デバイスは自動的に設定を以前にコミットした設定にロールバックします。

手記:

前回のコミット操作commit checkcommitは、check: trueモジュール内の config または commit: true 引数に対応するデバイス上での または の操作で確認できます。

Verify BGP configuration

(オプション)指定されたデバイスでのJSNAPyテストが成功したか失敗したかを明示的に示します。このタスクは特に必須ではありませんが、JSNAPy テストがいつどのデバイスで失敗したかをより簡単に識別できます。

構成

グループ変数の定義

手順

グループ変数を定義するには:

  • group_vars/all ファイルで、ビルド ディレクトリとコンフィギュレーション ファイルとログ ファイルのファイル名の変数を定義します。

Jinja2 テンプレートとホスト変数の定義

Jinja2 テンプレートの定義

BGP 設定の生成に使用する Jinja2 テンプレートを作成するには、次の手順に従います。

  1. プロジェクトのプレイブックディレクトリに bgp-template.j2 という名前のファイルを作成します。

  2. BGP 構成テンプレートをファイルに追加します。

ホスト変数の定義

BGPコンフィギュレーションを生成するためにJinja2テンプレートで使用されるホスト変数を定義するには、以下のようにします。

  1. プロジェクトの host_vars ディレクトリで、ホストごとに .yaml という名前のhostname個別のファイルを作成します。

  2. r1.yaml ファイルでホスト r1 の変数を定義します。

  3. r2.yaml ファイルでホスト r2 の変数を定義します。

  4. r3.yaml ファイルでホスト r3 の変数を定義します。

JSNAPyテストファイルの作成

手順

この jsnapy モジュールは、 ~/jsnapy/testfiles ディレクトリー内の JSNAPy テスト・ファイルを参照します。JSNAPy テスト・ファイルを作成するには、次のようにします。

  1. コマンドを実行し、show bgp neighborBGP ピアの状態が確立されていることをテストする jsnapy_test_file_bgp_states.yaml ファイルを作成します。

  2. コマンドを実行し、show bgp summaryBGP ダウン ピア カウントが 0 でなければならないことをアサートする jsnapy_test_file_bgp_summary.yaml ファイルを作成します。

Ansibleプレイブックを作成する

デバイスを構成する最初のプレイを定義する

コンフィギュレーションをレンダリングし、それをデバイスにロードし、コミット確認済み操作としてコンフィギュレーションをコミットする最初のプレイを作成するには、以下を行います。

  1. プレイブックの定型文と、モジュールをローカルで実行する最初のプレイを含めます。

  2. 既存のビルドディレクトリを空のディレクトリに置き換えるタスクを作成し、新しい設定ファイルを保存します。

  3. Jinja2テンプレートファイルとホスト変数からBGP設定をレンダリングするタスクを作成し、そのホストのビルドディレクトリにある bgp.conf ファイルに保存します。

  4. ビルドディレクトリ内の設定ファイルを最終的な junos.conf 設定ファイルにアセンブルするタスクを作成します。

  5. デバイス上に設定を読み込み、確認が必要なコミット操作を実行し、設定が変更されていれば、指定されたハンドラに通知するタスクを作成します。

  6. デバイスの構成が更新された場合にプレイブックの実行を一時停止するハンドラーを作成し、一時停止時間を環境に適した値に設定します。

JSNAPy操作を実行するための2番目の再生を定義します

設定が変更され、JSNAPyテストに合格した場合、JSNAPy スナップチェック操作を実行し、コミットされた設定を確認する 2 つ目のプレイを作成するには、次の手順に従います。

  1. モジュールをローカルで実行する2番目のプレイの定型文を含めます。

  2. 指定されたJSNAPyテストファイルのテストに基づいてJSNAPyスナップチェック操作を実行するタスクを作成し、モジュールのレスポンスを登録します。

  3. 指定された条件が満たされた場合にコミットを確認するタスクを作成します。

  4. (オプション)モジュールを使用して assert 、JSNAPy テストに合格したことをアサートするタスクを作成します。

業績

Ansibleコントロールノードで、完成したプレイブックを確認します。プレイブックに目的のコードが表示されない場合は、このセクションの手順を繰り返してプレイブックを修正します。

プレイブックの実行

プレイブックを実行するには:

  • ansible-playbook制御ノードでコマンドを発行し、プレイブックのパスと必要なオプションを指定します。

検証

BGP ネイバーの検証

目的

各ネイバーアドレスに対してBGPセッションが確立されていることを確認します。

JSNAPy テストファイルは、BGP セッションが各ネイバーアドレスに対して確立されていること、およびダウンしているピアがないことをテストします。タスク出力により Verify BGP configuration 、指定されたデバイスがすべてのJSNAPyテストに合格したことをすばやく確認できます。JSNAPy passPercentage が 100% の場合、タスクはタスク出力に含めます "msg": "All assertions passed"

アクション

Verify BGP configurationタスクの出力を確認し、各デバイスがメッセージを返すAll assertions passedことを確認します。

意味

この All assertions passed メッセージは、デバイスで BGP セッションが正常に確立されたことを示します。

Ansibleプレイブックエラーのトラブルシューティング

設定読み込みエラーのトラブルシューティング

問題

Ansibleプレイブックは、 ConfigLoadError 構文エラーのためにデバイスに設定を読み込めなかったことを示すエラーを生成します。

解決

このプレイブックは、Jinja2 テンプレートと、 host_vars ディレクトリでそのデバイス用に定義されたホスト変数を使用して、Junos OS 構成をレンダリングします。プレイブックは、Jinja2 テンプレートが無効な構成を生成すると、構文エラーを生成します。このエラーを修正するには、Jinja2 テンプレートを更新して、エラー メッセージ内のキーによって bad_element 識別される要素を修正します。

失敗したJSNAPyテストのトラブルシューティング

問題

タスクの出力は Verify BGP configuration 、JSNAPy passPercentage が 100% に等しくなかったため、アサーションが失敗したことを示しています。

デバイスがネイバーとのBGPセッションを確立していない場合、またはセッションがダウンした場合、アサーションは失敗します。アサーションが失敗し、そのデバイスの構成が最初の再生で更新された場合、プレイブックはデバイス上の新しい構成のコミットを確認せず、デバイスは構成を以前にコミットされた構成にロールバックします。

解決

ピアがセッションを確立する前に操作が行われた snapcheck 場合、またはBGPネイバーが正しく設定されていない場合、JSNAPyテストは失敗する可能性があります。プレイブックの出力に、構成が正常に読み込まれ、デバイスにコミットされたことが示されている場合は、ハンドラーの一時停止間隔を環境に適した値に増やし、プレイブックを再実行してみてください。

それでもテストが失敗する場合は、Jinja2 テンプレートと各デバイスのホスト変数に正しいデータが含まれていること、および各デバイスの構成が正しいことを確認します。

失敗したコミット確認のトラブルシューティング

問題

1 つ以上のデバイスで構成が確認されませんでした。

解決

プレイブックは、設定が変更され、JSNAPy テストに合格した場合にのみ、設定を確認します。タスクの出力が Load and commit config, require confirmation 構成が変更されなかったことを示している場合、プレイブックはコミットを確認するタスクを実行しません。設定が変更されても確認されなかった場合、JSNAPyテストは失敗しています。BGPネイバーが正しく設定されていない場合、またはプレイブックがデバイスがBGPセッションを確立するのに十分な時間をプレイブックに提供しない場合、JSNAPyテストは失敗する可能性があります。詳細については、 失敗したJSNAPyテストのトラブルシューティングを参照してください

変更履歴テーブル

機能のサポートは、使用しているプラットフォームとリリースによって決まります。 機能エクスプローラー を使用して、機能がプラットフォームでサポートされているかどうかを判断します。

解放
形容
2.0.0
リリース 2.0.0 以降 Juniper.junosjuniper_junos_jsnapy モジュールはモジュールの機能を置き換えます junos_jsnapy