このページで
Junos PyEZ を使用して設定をコミットする
Junos PyEZ を使用すると、Junos デバイスで構造化および非構造化構成を変更できます。デバイスに接続し、設定を変更した後、設定をコミットしてアクティブにする必要があります。このトピックでは、設定のコミット方法と、Junos PyEZ アプリケーションでサポートされているコミット オプションについて説明します。
受験者の設定をコミットする方法
Junos PyEZ jnpr.junos.utils.config.Config ユーティリティを使用してデバイス上で非構造化構成を変更する場合は、インスタンス commit() メソッドを呼び出して候補の設定をConfigコミットします。例えば:
from jnpr.junos import Device
from jnpr.junos.utils.config import Config
from jnpr.junos.exception import ConfigLoadError, CommitError
with Device(host='router1.example.com') as dev:
with Config(dev, mode='exclusive') as cu:
try:
cu.load(path='configs/mx_config.conf', merge=True)
cu.commit()
except (ConfigLoadError, CommitError) as err:
print (err)
コミットせずに設定の構文を検証するには、メソッドの commit_check() 代わりに メソッドを commit() 呼び出します。
cu.commit_check()
Junos PyEZ 設定テーブルとビューを使用してデバイス上で構造化された設定変更を行う場合は、自動的に 、 、 メソッドを呼び出すメソッドをset()呼び出すか、さまざまなメソッドを個別に呼び出 commit() lock()load()unlock()して、候補の設定をコミットします。例えば:
from jnpr.junos import Device
from myTables.UserConfigTable import UserConfigTable
with Device(host='router1.example.com') as dev:
userconfig = UserConfigTable(dev)
# ...set the values for the configuration data...
userconfig.append()
userconfig.set(merge=True)
同様に、次の例のように、個々のメソッドを呼び出すことができます。
from jnpr.junos import Device
from myTables.UserConfigTable import UserConfigTable
with Device(host='router1.example.com') as dev:
userconfig = UserConfigTable(dev)
# ...set the values for the configuration data...
userconfig.append()
userconfig.lock()
userconfig.load(merge=True)
userconfig.commit()
userconfig.unlock()
コンテキスト マネージャーを使用して、 または Table オブジェクトをConfig作成し、引数を mode private、 、 dynamicexclusive、 batch、または ephemeralに設定した場合、 および commit() メソッドのみを呼び出してload()デバイスを構成します。コンテキストマネージャーは、データベースの開始とロックとロックの解除を処理するため、これらのモードのいずれかで 、 、unlock()または set() メソッドをlock()呼び出す場合、LockError例外が発生します。
コミット オプションを指定する方法
Junos CLI には、コミット コメントの追加や、複数のルーティング エンジンでの設定の同期など、コミット操作のオプションが用意されています。Junos PyEZ は、これらの同じコミット オプションの多くと、Junos PyEZ アプリケーションで使用できる追加オプションを、または メソッドの引数リストに set() 適切な引数を commit() 含めることでサポートしています。表 1 は、サポートされているコミット オプションの概要を示し、対応する CLI コマンドを示しています。
| Commit Option 引数 |
説明 |
CLI コマンド[CLIこまんど] |
|---|---|---|
|
|
システム ログ ファイルとデバイスのコミット履歴に、そのコミット操作に関するコメントをログに記録します。 |
|
|
|
最初のコミット後、指定した時間内にコミット操作を確認する必要があります。それ以外の場合は、以前にコミットされた設定にロールバックします。 10 分の既定の時刻を使用する |
|
|
|
コミット プロセスに関する詳細情報を含む XML オブジェクトを返します。 |
|
|
|
他のルーティング エンジンにオープンな設定セッションやコミットされていない設定変更がある場合でも、両方のルーティング エンジンで設定を同期してコミットします。 |
|
|
|
コミット操作中に発生する警告を無視します。 すべての警告を無視するように引数を |
– |
|
|
両方のルーティング エンジンで設定を同期してコミットします。 |
|
|
|
指定された値をタイムアウトとして使用して、操作が完了するまで待ちます。 |
– |
コミット コメント
設定をコミットする際、コミットされた変更の目的を説明する簡単なコメントを含めることができます。変更を記述したコメントをログに記録するには、必要に comment 応じて パラメーターとメッセージ文字列を commit() または set() メソッドの引数リストに含めます。例えば:
cu.commit(comment='Configuring ge-0/0/0 interface')
引数を comment 含めると、CLI でコンフィギュレーション・モード・ commit comment コマンドを発行することと同じです。コメントはシステムログファイルに記録され、デバイスのコミット履歴に含まれています。CLIで コマンドを show system commit 発行することで表示できます。
コミット確認
最初のコミット後に指定した時間内にコミット操作を確認するように要求するには、必要に応じて または set() メソッドの引数リストに引数をcommit()含confirm=minutesめます。
cu.commit(confirm=15)
特定の時間制限内でコミットが確認されない場合、デバイスは自動的に以前にコミットされた設定にロールバックし、ログインしているすべてのユーザーにブロードキャストメッセージを送信します。許容される範囲は 1~65,535 分です。デフォルトのロールバック時間を10分に指定confirm=Trueすることもできます。コミット操作を確認するには、 または commit_check() メソッドのいずれかをcommit()呼び出します。
確認されたコミット操作は、設定変更が正しく機能し、デバイスへの管理アクセスを妨げないことを確認するのに役立ちます。変更によってアクセスが妨われるか、その他のエラーが発生した場合、以前の設定に自動ロールバックすると、ロールバック期限が過ぎた後にデバイスにアクセスできるようになります。デバイスへの接続が切断された場合、接続を復元するには、Junos PyEZ open() 方法を発行する必要があります。
コミットの詳細
または set() メソッドの引数リストに 引数を含めることで、detail=Trueコミット操作全体の詳細をcommit()確認できます。この引数を含めると、メソッドはコミット プロセスに関する詳細情報を含む XML オブジェクトを返します。戻り値は、CLI の コマンドの出力commit | display detail | display xmlで 要素で<commit-results>囲まれた内容と同じです。
from lxml import etree
...
commit_detail = cu.commit(detail=True)
print (etree.tostring(commit_detail, encoding='unicode'))
コミット同期
デバイスにデュアル ルーティング エンジンがある場合、 または set() メソッドの引数リストに 引数を含sync=Trueめることで、両方のルーティング エンジンで設定をcommit()同期およびコミットできます。
cu.commit(sync=True)
引数を sync=True 含めると、デバイスはローカル ルーティング エンジンに格納されている候補設定を他のルーティング エンジンにコピーし、候補の構文の正しさを検証して、両方のルーティング エンジンにコミットします。他の commit synchronize ルーティング エンジンでオープンな設定セッションやコミットされていない設定変更があったとしても、操作を強制的に成功させるには、 引数を使用します。この引数を使用 force_sync=True すると、デバイスは設定を同期およびコミットする前に、他のルーティング エンジン上の設定セッションを終了します。
cu.commit(force_sync=True)
コミットおよびコミット チェック タイムアウト
RPC がタイムアウトするデフォルト時間は 30 秒です。大きな設定変更がこの値を超える場合、設定をアップロード、チェック、コミットする前に、コミットまたはコミットチェック操作がタイムアウトすることがあります。コミット チェックまたはデフォルトのタイムアウト間隔よりも長いコミット時間を必要とする設定変更に対応するには、 または set() メソッドの引数リストに 引数を commit() commit_check()含timeout=secondsめ、タイムアウト間隔を適切な値に設定します。例えば:
cu.commit_check(timeout=60)
cu.commit(timeout=360)
警告を無視
Junos PyEZ は、RpcErrorRPC の応答に重大度が警告以上の要素が含まれている<rpc-error>場合に例外を発生させます。警告に応じて発生するRpcError例外を抑制する必要がある場合や望ましい場合は、メソッドのignore_warningパラメーターをcommit()含めることができます。例えば:
cu.commit(ignore_warning=True)
パラメーターの ignore_warning 使用について詳しくは、 Junos PyEZ アプリケーションで警告が発生した RpcError 例外の抑制を参照してください。