このページの内容
Junos PyEZを使用して設定をコミットする
Junos PyEZでは、Junosデバイス上で構造化および非構造化の設定変更を行うことができます。デバイスに接続し、設定を変更した後、設定をコミットしてアクティブにする必要があります。このトピックでは、設定をコミットする方法と、Junos PyEZアプリケーションでサポートされているコミットオプションについて説明します。
候補の設定をコミットする方法
Junos PyEZ jnpr.junos.utils.config.Config ユーティリティを使用して、デバイス上で構造化されていない設定を変更する場合、 Config インスタンスを呼び出して候補の設定をコミットします commit() メソッド。次に例を示します。
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()メソッドの代わりにcommit_check()メソッドを呼び出します。
cu.commit_check()
Junos PyEZ 設定テーブルとビューを使用して、デバイス上で構造化設定を変更する場合、lock()、load()、commit()、unlock() メソッドを自動的に呼び出す set() メソッドを呼び出すか、さまざまなメソッドを個別に呼び出すことで、候補設定をコミットします。次に例を示します。
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()
コンテキストマネージャーを使用して Config またはテーブルオブジェクトを作成し、 mode 引数を private、 exclusive、 dynamic、 batch、または ephemeralに設定する場合、デバイスの設定には load() メソッドと commit() メソッドのみを呼び出します。コンテキスト マネージャーは、データベースのオープンとロック、およびクローズとロック解除を処理するため、これらのモードのいずれかで lock()、 unlock()、または set() メソッドを呼び出すと、LockError 例外が発生します。
コミットオプションを指定する方法
Junos CLIには、コミットコメントの追加や複数のルーティングエンジン上の設定の同期など、コミット操作のオプションが用意されています。Junos PyEZ は、これらの同じコミットオプションの多くと、いくつかの追加オプションをサポートしており、 commit() または set() メソッドの引数リストに適切な引数を含めることで、Junos PyEZ アプリケーションで使用できます。 表1は 、サポートされているコミットオプションの概要と、対応するCLIコマンドを示しています。
| コミットオプション引数 |
説明 |
CLIコマンド |
|---|---|---|
|
|
そのコミット操作に対するコメントをシステムログファイルとデバイスのコミット履歴に記録します。 |
|
|
|
最初のコミット後、指定された時間内にコミット操作を確認する必要があります。それ以外の場合は、以前にコミットされた設定にロールバックします。 デフォルトの時間である10分を使用するには、引数を |
|
|
|
コミットプロセスに関する詳細情報を含むXMLオブジェクトを返します。 |
|
|
|
他方のルーティングエンジンにオープンな設定セッションやコミットされていない設定変更がある場合でも、両方のルーティングルーティングエンジンの設定を同期してコミットします。 |
|
|
|
コミット操作中に発生する警告を無視します。 すべての警告を無視するには引数を |
– |
|
|
両方のルーティングエンジンの設定を同期し、コミットします。 |
|
|
|
指定された値をタイムアウトとして使用して、操作の完了を待ちます。 |
– |
コミットコメント
設定をコミットするときに、コミットされた変更の目的を説明する簡単なコメントを含めることができます。変更を説明するコメントをログに記録するには、必要に応じて、 comment パラメーターとメッセージ文字列を commit() メソッドまたは set() メソッド引数リストに含めます。次に例を示します。
cu.commit(comment='Configuring ge-0/0/0 interface')
comment引数を含めることは、CLIでcommit comment設定モードコマンドを発行することと同じです。コメントはシステムログファイルに記録され、デバイスのコミット履歴に含まれます。これは、CLIでshow system commitコマンドを発行することで表示できます。
コミットの確認
最初のコミット後、指定された時間内にコミット操作を確認するように要求するには、必要に応じて、commit() または set() メソッド引数リストに confirm=minutes 引数を含めます。
cu.commit(confirm=15)
指定された制限時間内にコミットが確認されない場合、デバイスは自動的に以前にコミットされた設定にロールバックし、ログインしているすべてのユーザーにブロードキャストメッセージを送信します。許容範囲は 1 分から 65,535 分です。また、デフォルトのロールバック時間である10分を使用するように confirm=True を指定することもできます。コミット操作を確認するには、 commit() メソッドまたは commit_check() メソッドのいずれかを呼び出します。
確認済みのコミット操作は、設定変更が正しく機能し、デバイスへの管理アクセスが妨げられないことを検証するのに役立ちます。変更によってアクセスができなくなったり、その他のエラーが発生した場合は、以前の設定への自動ロールバックにより、ロールバック期限が過ぎた後にデバイスへのアクセスが可能になります。デバイスへの接続を失った場合、接続を復元するには、Junos PyEZ open() メソッドを発行する必要があります。
コミットの詳細
commit() メソッド引数リストに detail=True 引数を含めることで、コミット操作全体の詳細set()確認できます。この引数を含めると、メソッドはコミット プロセスに関する詳細情報を含む 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'))
コミット同期
デバイスにデュアルルーティングエンジンがある場合、commit()またはset()メソッド引数リストにsync=True引数を含めることで、両方のルーティングエンジンで設定を同期してコミットできます。
cu.commit(sync=True)
sync=True引数を含めると、デバイスはローカルルーティングエンジンに保存されている候補コンフィギュレーションを他のルーティングエンジンにコピーし、候補の構文の正しさを検証して、両方のルーティングエンジンにコミットします。他のルーティングエンジンにオープンな設定セッションやコミットされていない設定変更がある場合でも、commit synchronize操作を強制的に成功させるには、force_sync=True引数を使用します。これにより、デバイスは設定を同期してコミットする前に、他のルーティングエンジンの設定セッションを終了します。
cu.commit(force_sync=True)
コミットとコミットチェックのタイムアウト
RPC がタイムアウトする既定の時間は 30 秒です。大規模な設定変更はこの値を超える場合があり、設定をアップロード、チェック、コミットする前に、コミットまたはコミットチェック操作がタイムアウトします。コミットチェックやデフォルトのタイムアウト間隔よりも長いコミット時間を必要とする可能性のある設定変更に対応するには、commit_check()、commit()、またはset()メソッドの引数リストにtimeout=seconds引数を含め、タイムアウト間隔を適切な値に設定します。次に例を示します。
cu.commit_check(timeout=60)
cu.commit(timeout=360)
警告を無視する
Junos PyEZ は、RPC 応答に重大度が警告以上の <rpc-error> 要素が含まれている場合、RpcError例外を発生させます。警告に応答して発生するRpcError例外を抑制する必要がある場合、または抑制することが望ましい場合は、commit() メソッドの ignore_warning パラメーターを含めることができます。次に例を示します。
cu.commit(ignore_warning=True)
ignore_warning パラメーターの使用に関する詳細については、Junos PyEZ アプリケーションで警告に対して発生した RpcError 例外を抑制するを参照してください。