Junos PyEZ を使用して、候補コンフィギュレーションと以前にコミットされたコンフィギュレーションを比較します。
概要 Junos PyEZ diff()
と pdiff()
メソッドを使用して、候補コンフィギュレーションを以前にコミットしたコンフィギュレーションと比較します。
Junosデバイスには、直近にコミットされた設定のコピーと、それ以前の設定が最大49個保存されます。Junos PyEZ jnpr.junos.utils.config.Config
ユーティリティを使用すると、候補コンフィギュレーションを以前にコミットしたコンフィギュレーションと比較し、その差分を印刷または返すことができます。 表1 は、Junos OS CLIで 設定モードコマンドを発行 show | compare rollback n
するのと同等の方法の概要を示しています。
エフェメラル設定データベースには、コミットされたエフェメラル設定データの現在のバージョンのみが格納されるため、変更されたエフェメラル設定と以前にコミットされた設定の比較はサポートされていません。
メソッド および pdiff()
メソッドはdiff()
、候補コンフィギュレーションと、以前にコミットされたコンフィギュレーションとの差分を取得します。このコンフィギュレーションは、メソッド呼び出しの rollback ID パラメーター rb_id
によって参照されます。このパラメータを省略した場合、ロールバック ID のデフォルトはアクティブなコンフィギュレーションに対応する 0 になります。
差分はパッチ形式で返されます。
候補コンフィギュレーションにのみ存在するステートメントには、先頭にプラス記号(+)が付きます
比較コンフィギュレーションにのみ存在し、候補コンフィギュレーションには存在しないステートメントには、先頭にマイナス記号(-)が付きます
メソッドは、構成間に違いがない場合は、返されるか出力
None
されます。
Junos PyEZアプリケーションでは、デバイスとの接続を確立した後、 または Tableオブジェクトのorpdiff()
メソッドConfig
を呼び出して、候補の構成とロールバックの構成を比較できますdiff()
。次の例では、このConfig
クラスを使用して、コンフィギュレーションの変更を候補コンフィギュレーションに読み込み、変更をコミットする前に、変更された候補コンフィギュレーションとアクティブなコンフィギュレーションの差異を出力するメソッドを呼び出しpdiff()
ます。
from jnpr.junos import Device from jnpr.junos.utils.config import Config with Device(host='router1.example.com') as dev: with Config(dev, mode='exclusive') as cu: cu.load(path='configs/junos-config-mx.conf', merge=True) cu.pdiff() cu.commit()
コードを実行すると、差分が標準出力に出力されます。例えば:
[edit system scripts op] + file bgp-neighbors.slax; [edit interfaces] + ge-1/0/0 { + unit 0 { + family inet { + address 198.51.100.1/26; + } + } + } - ge-1/1/0 { - unit 0 { - family inet { - address 198.51.100.65/26; - } - } - }
構成の違いをさらに操作するためのオブジェクトとして取得するには、メソッドの代わりにpdiff()
メソッドを呼び出しdiff()
、出力を変数に格納します。例えば:
cdiff = cu.diff(rb_id=2) print (cdiff)
Junos PyEZの設定テーブルとビューを使用してデバイスの構造化された設定変更を行う場合、 、 load()
commit()
、および unlock()
の各メソッドを個別に呼び出すlock()
か、 メソッドを呼び出して set()
これらのメソッドをすべて自動的に呼び出すことで、設定データを読み込んでコミットすることができます。設定テーブルを使用してデバイスを設定し、更新された候補コンフィギュレーションを、アプリケーションで または メソッドを使用してdiff()
以前にコミットしたコンフィギュレーションと比較する場合は、 メソッドの代わりに set()
および commit()
メソッドを使用する必要がありますload()
。pdiff()
これにより、コンフィギュレーション・データが候補コンフィギュレーションにロードされた後、コミットされる前に差分を取得することができます。例えば:
from jnpr.junos import Device from myTables.ConfigTables import UserConfigTable with Device(host='router1.example.com') as dev: with UserConfigTable(dev, mode='exclusive') as userconf: userconf.user = 'user1' userconf.class_name = 'read-only' userconf.append() userconf.load(merge=True) userconf.pdiff() userconf.commit()
次の例では、候補の設定をロールバック ID 5 の設定と比較していますが、設定は変更していません。
from jnpr.junos import Device from jnpr.junos.utils.config import Config with Device(host='router1.example.com') as dev: cu = Config(dev) cu.pdiff(rb_id=5)