SALT を使用して Junos OS 候補の設定と以前にコミットした設定を比較する
ジュニパーネットワークスは、Salt を使用して Junos OS を実行しているデバイスを管理するサポートを提供しており、Junos 実行および状態モジュール(Salt 用)は、管理対象デバイス上で運用および設定タスクを実行できる機能を定義します。 salt.modules.junos.diff 実行関数と salt.states.junos.diff 状態関数を使用すると、候補コンフィギュレーションを以前にコミットされたコンフィギュレーションと比較し、差異を返すことができます。
エフェメラル設定データベースには、コミットされたエフェメラル設定データの現在のバージョンのみが保存されるため、現在の設定と以前にコミットされた設定との比較はサポートされません。
Junos OSを実行するデバイスは、最近コミットされた設定のコピーと、最大49個の以前の設定を保存します。 junos.diff 関数は、候補コンフィギュレーションと以前にコミットされたコンフィギュレーションとの差分を返し、これは rollback ID パラメーターによって参照されます。 表 1 は、 junos.diff 実行関数と state 関数に使用するロールバック ID パラメーターの概要を示しています。ロールバックIDパラメーターを省略した場合、ロールバックIDはデフォルトで0になり、これはアクティブまたは最後にコミットされた設定に対応します。
機能 |
ロールバック ID パラメータ |
|---|---|
|
|
|
|
設定の違いは、パッチ形式で返されます。候補コンフィギュレーションにのみ存在するステートメントにはプラス記号(+)が、比較コンフィギュレーションにのみ存在し、候補コンフィギュレーションには存在しないステートメントにはマイナス記号(-)が接頭辞として付けられます。設定に違いがない場合、 junos.diff 関数は Noneを出力します。
候補コンフィギュレーションをアクティブなコンフィギュレーションと比較するには、 junos.diff 機能を実行し、ロールバックIDパラメータを省略するか、0に設定します。例えば:
saltuser@salt-master:~$ sudo salt 'router1' junos.diff
router1:
----------
message:
[edit system scripts op]
+ file bgp-neighbors.slax;
out:
True
上記のコマンドは、Junos OS CLI(コマンドライン インターフェイス)で show | compare または show | compare rollback 0 設定モード コマンドを発行することと同じです。
saltuser@router1# show | compare [edit system scripts op] + file bgp-neighbors.slax;
候補コンフィギュレーションを以前のコンフィギュレーションと比較し、違いがない場合、 junos.diff 関数は Noneを返します。次の例では、 junos.diff 関数が候補コンフィギュレーションとアクティブなコンフィギュレーションを比較し、候補コンフィギュレーションにコミットされていない変更がないことを示す None を返します。
saltuser@salt-master:~$ sudo salt 'router2' junos.diff
router2:
----------
message:
None
out:
True
候補の設定を特定のロールバック設定と比較するには、 id パラメータをロールバック設定のIDに設定します。これは、Junos OS CLI で show | compare rollback n 設定モードコマンドを発行するのと同じです。
saltuser@salt-master:~$ sudo salt 'router1' junos.diff id=3
router1:
----------
message:
[edit system scripts op]
+ file bgp-neighbors.slax;
+ file bgp-summary.slax;
out:
True
また、同じ情報を返す状態を定義することもできます。
saltuser@salt-master:~$ cat /srv/salt/junos_diff.sls
Retrieve configuration differences:
junos.diff:
- d_id: 0
状態を 1 つ以上のターゲットに適用すると、各ターゲットの差が返されます。
saltuser@salt-master:~$ sudo salt 'router1' state.apply junos_diff
router1:
----------
ID: Retrieve configuration differences
Function: junos.diff
Result: True
Comment:
Started: 00:09:55.359546
Duration: 3110.709 ms
Changes:
----------
message:
[edit system scripts op]
+ file bgp-neighbors.slax;
out:
True
Summary for router1
------------
Succeeded: 1 (changed=1)
Failed: 0
------------
Total states run: 1
Total run time: 3.111 s