Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

例:Junos PyEZ を使用してファイルから設定データを読み込む

Junos PyEZライブラリを使用すると、Junosデバイスの運用タスクや設定タスクを実行できます。この例では、Junos PyEZ jnpr.junos.utils.config.Config ユーティリティを使用して、構成管理サーバー上のローカル ファイルから Junos デバイスに構成データを読み込みます。

要件

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

  • Python 3.5 以降および Junos PyEZ リリース 2.0 以降を実行する構成管理サーバー

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

  • サーバーとJunosデバイス上の適切なユーザーに対して設定されたSSH公開鍵と秘密鍵のペア

概要

この例では、Junos PyEZ Config ユーティリティを使用して、指定したデバイスの設定で新しいopスクリプトを有効にするPythonアプリケーションを紹介します。構成管理サーバー上にある junos-config-add-op-script.conf ファイルには、関連する構成データが ASCII テキストとしてフォーマットされて含まれています。

Python アプリケーションは、Junos デバイスとConfigの接続を処理するクラス、ターゲット デバイスの非構造化構成変更に使用されるクラス、モジュールからのjnpr.junos.exception必須例外(Junos デバイスの管理時に発生する例外を含む)をインポートDeviceします。この例では、ConfigクラスのインスタンスConfigのスタンドアロン変数を作成するのではなく、Deviceインスタンスをインスタンスにバインドします。

ターゲット デバイスのインスタンスを作成 Device した後、メソッドは open() デバイスとの接続と NETCONF セッションを確立します。次に、このユーティリティ・メソッドは Config 、候補コンフィギュレーションをロックし、コンフィギュレーションの変更を操作として load merge 候補コンフィギュレーションに読み込み、候補コンフィギュレーションをコミットしてから、ロックを解除します。

method path パラメーターはload()、構成ファイルのパスに設定されます。構成ファイルの拡張子は構成データの形式を示すため、パラメーターはformat引数リストから省略されます。設定はmerge=True、デバイスが操作を実行するload merge必要があることを示します。

設定操作が完了すると、アプリケーションはメソッド close() を呼び出してNETCONFセッションと接続を終了します。アプリケーションには、コンフィギュレーションのロック時に発生するエラーやCommitError、コミット操作中に発生するエラーなどの例外LockErrorを処理するためのコードが含まれています。アプリケーションには、発生する可能性のある追加の例外を処理するコードも含まれています。

構成

構成データ ファイルの作成

手順

Junos PyEZアプリケーションで使用される設定データファイルを作成するには、次の手順に従います。

  1. 設定データの形式(この例ではASCIIテキスト)に基づいて、適切な拡張子を持つファイルを新たに作成します。

  2. 必要な構成変更をファイルに含めます。例を示します。

Junos PyEZアプリケーションを作成する

手順

Junos PyEZ を使用して Junos デバイスの設定を変更する Python アプリケーションを作成するには、次の手順に従います。

  1. 必要なモジュール、クラス、およびオブジェクトをインポートします。

  2. 必要な変数を含めます(この例では、管理対象デバイスのホスト名と設定データを含むファイルへのパスが含まれます)。

  3. main()関数定義と関数呼び出しを作成し、残りのステートメントを定義内に配置します。

  4. クラスのインスタンス Device を作成し、その特定の接続に必要なホスト名とパラメーターを指定します。

    次に、接続を開き、デバイスとのNETCONFセッションを確立します。

  5. インスタンスを Config インスタンスに Device バインドします。

  6. 設定をロックします。

  7. 構成の変更を読み込み、エラーを処理します。

  8. 設定をコミットします。

  9. 設定のロックを解除します。

  10. NETCONF セッションを終了し、デバイスとの接続を閉じます。

結果

構成管理サーバーで、完成したアプリケーションを確認します。アプリケーションに目的のコードが表示されない場合は、この例の手順を繰り返してアプリケーションを修正します。

Junos PyEZ アプリケーションの実行

アプリケーションの実行

  • 構成管理サーバーで、アプリケーションを実行します。

検証

設定の確認

目的

Junos デバイスの構成が正しく更新されたことを確認します。

アクション

Junos デバイスにログインし、設定、コミット履歴、ログ ファイルを表示して設定を確認し、コミットします。例えば:

意味

設定とログ ファイルの内容は、正しい設定ステートメントがデバイスで正常に設定され、コミットされたことを示しています。

トラブルシューティング

タイムアウトエラーのトラブルシューティング

問題

Junos PyEZ コードによって RpcTimeoutError メッセージまたはTimeoutExpiredError メッセージが生成され、デバイス設定の更新に失敗します。

NETCONF RPCがタイムアウトするデフォルトの時間は30秒です。大規模な構成変更がこの値を超えると、構成をアップロードしてコミットする前に操作がタイムアウトする可能性があります。

ソリューション

デフォルトのタイムアウト間隔よりも長いコミット時間が必要になる可能性がある設定変更に対応するには、タイムアウト間隔を適切な値に設定し、コードを再実行します。間隔を設定するには、プロパティをDevicetimeout適切な値に設定するか、デバイスの構成データをコミットするメソッドを呼び出すcommit()ときに引数を含めtimeout=secondsます。例えば:

設定ロックエラーのトラブルシューティング

問題

Junos PyEZコードは、設定をロックできないことを示すロックエラーメッセージを生成します。例えば:

構成ロック エラーは、次の理由で発生する可能性があります。

  • 別のユーザーが構成を排他ロックしています。

  • 共有構成データベースには、コミットされていない変更があります。

  • Junos PyEZコードを実行しているユーザーには、デバイスを設定する権限がありません。

ソリューション

別のユーザーが設定に排他ロックを設定した場合、または設定を変更した場合は、ロックが解除されるか変更がコミットされるまで待ってから、コードを再実行してください。問題の原因が、デバイスを構成する権限がユーザーないことである場合は、必要な権限を持つユーザーでアプリケーションを実行するか、必要に応じて、変更を行うために必要な権限を現在のユーザーに付与するように Junos デバイスを設定します。

設定変更エラーのトラブルシューティング

問題

Junos PyEZ コードは、パーミッションの問題により設定を変更できないことを示す ConfigLoadError メッセージを生成します。

このエラー メッセージは、Junos PyEZ コードを実行するユーザーが、設定を変更する権限はあるが、設定の必要な部分を変更する権限を持っていない場合に生成されることがあります。

ソリューション

必要なパーミッションを持つユーザーでアプリケーションを実行するか、必要に応じて、変更を行うために必要なパーミッションを現在のユーザーに付与するように Junos デバイスを設定します。