ソルトを使用したJunos OS搭載デバイスの設定
ジュニパーネットワークスは、Salt を使用して Junos OS を実行しているデバイスを管理するためのサポートを提供しており、Junos の実行および状態モジュール(Salt 用)は、Junos OS の設定を管理できる機能を定義します。このトピックでは、Salt を使用して Junos OS 設定を生成、プロビジョニング、管理する方法について説明します。
Salt を使用した Junos OS 設定のプロビジョニングの概要
Junos 実行モジュールと状態モジュール(Salt 用)を使用すると、Salt を使用して Junos OS を実行しているデバイスの設定を管理できます。モジュールでは、次のタスクを実行する関数を定義します。
構成データベースのロックとロック解除
構成データの読み込み
設定をコミットします
設定をロールバックする
デバイスのホスト名を設定し、変更をコミットします
表 1 は、設定の管理に使用できる機能の一覧と、各機能の簡単な説明を示しています。実行関数を使用して、Salt マスターのコマンドラインで操作を実行できます。しかし、多くの場合は、管理対象デバイスが存在する必要がある状態を定義し、状態関数を使用して設定を適用します。
Junos 実行機能 |
Junos State 関数 |
形容 |
|---|---|---|
ターゲット構成データベースにロードされた変更をコミットします。 |
||
候補コンフィギュレーションに対して |
||
ターゲット構成データベースをロック、変更、コミット、およびロック解除します。 |
||
指定されたファイル内の設定データをターゲット設定データベースに読み込みます。 |
||
候補コンフィギュレーションの排他ロックを要求します。 |
||
以前にコミットした設定に設定をロールバックし、コミットします。 |
||
Junos OS を実行している管理対象デバイスのホスト名を設定し、変更をコミットします。 |
||
候補コンフィギュレーションの排他ロックを解除します。 |
設定変更を行う基本的なプロセスは、設定データベースをロックし、設定変更をロードし、設定をコミットしてアクティブにし、設定データベースのロックを解除することです。対応する関数を使用して各操作を個別に実行することも、 junos.install_config 関数を使用して 1 つの関数呼び出しですべての操作を実行することもできます。
デフォルトでは、 junos.install_config 機能は configure exclusive モードを使用して候補の設定データベースに変更を加えます。これにより、設定データベースが自動的にロックおよびロック解除されます。この関数は、読み込まれた設定と現在の設定を比較し、変更があった場合にのみ新しい設定を適用します。関数が設定を変更すると、 commit check と commit 操作が実行されます。
junos.install_config 関数を使用すると、設定ワークフロー全体が処理されるため、設定変更の使用を推奨します。この機能を使用すると、設定の違いをファイルに保存し、異なる設定モードを使用することもできます。たとえば、How to Specify the Configuration Modeで説明されているように、configure privateモードを使用して候補構成のプライベートコピーを変更できます。
junos.load または junos.install_config 機能を使用して新しいコンフィギュレーション・データをロードする場合、ロード操作、および変更のソースとフォーマットを指定できます。
ロード操作 - ロード操作によって、コンフィギュレーション データを候補コンフィギュレーションにロードする方法が決まります。これらの機能は、マージ、上書き、置換、更新など、Junos OS CLIで利用できるのと同じロード操作の多くをサポートしています。詳細については、「 読み込み操作を指定する方法」を参照してください。
フォーマット—サポートされている標準フォーマットの1つを使用して、Junos OSを実行しているデバイスを設定できます。設定データやJinja2テンプレートは、テキスト、Junos XML要素、Junos OS
setコマンド、またはJSONとして提供できます。詳細については、 ロードする構成データの形式を指定する方法を参照してください。設定データソース—部分的または完全な設定を含むファイル、または Jinja2 テンプレートから設定データを読み込むことができます。詳細については、「 構成データを読み込む方法 」および 「Jinja2 テンプレートを使用して構成データを読み込む方法」を参照してください。
設定を変更した後、設定をコミットして、デバイス上でアクティブな設定にする必要があります。 junos.install_config、 junos.rollback、および junos.set_hostname 機能は、設定の変更を自動的にコミットします。 junos.commit 関数を実行して、コミット操作を実行することもできます。さまざまな関数の動作とサポートされるコミット オプションについては、 How to Commit the Configurationを参照してください。
新しいコンフィギュレーション・データのロードに加えて、 junos.rollback 機能を使用して、以前にコミットされたコンフィギュレーションにコンフィギュレーションをロールバックすることができます。この関数は、更新された設定を自動的にコミットします。詳細については、 How to Roll Back the Configurationを参照してください。
構成データベースをロックおよびロック解除する方法
変更する前に候補の構成をロックして、ロックが解除されるまで他のユーザーやアプリケーションが更新できないようにすることができます。これは、CLI の configure exclusive コマンドに相当します。コミット操作は、コミットを要求したユーザーやアプリケーションによる変更だけでなく、候補の設定にあるすべての変更に適用されるため、特に複数のユーザーが設定の変更を許可されているデバイスでは、変更を行う前に設定をロックすることを推奨します。
junos.install_config機能は、configure exclusiveモードを使用して候補の設定データベースに変更を加えます。このモードでは、設定データベースが自動的にロックされ、変更がロードされてコミットされ、データベースのロックが解除されます。ただし、junos.load 関数と junos.commit 関数を使用するなどして、読み込み操作とコミット操作を別々に実行する必要がある場合は、junos.lock 関数と junos.unlock 実行関数または状態関数を使用して、データベースを明示的にロックおよびロック解除できます。
設定データベースを変更する前に明示的にロックするには、 junos.lock 関数を使用します。例えば:
saltuser@salt-master:~$ sudo salt 'router1' junos.lock
router1:
----------
message:
Successfully locked the configuration.
out:
True
データベースをアンロックし、コミットされていない変更を破棄するには、 junos.unlock 関数を使用します。例えば:
saltuser@salt-master:~$ sudo salt 'router1' junos.unlock
router1:
----------
message:
Successfully unlocked the configuration.
out:
True
構成データベースが変更されている場合、または別のユーザーが既に構成データベースに排他ロックをかけている場合、次の例に示すように、 junos.lock 関数は LockError メッセージを返します。
saltuser@salt-master:~$ sudo salt 'router1' junos.lock
router1:
----------
message:
Could not gain lock due to : "LockError(severity: error, bad_element: None, message: configuration database modified)"
out:
False
saltuser@salt-master:~$ sudo salt 'router1' junos.lock
router1:
----------
message:
Could not gain lock due to : "LockError(severity: error, bad_element: None, message: configuration database locked by:
admin terminal p1 (pid 28508) on since 2019-08-12 12:46:52 PDT
exclusive [edit])"
out:
False
構成モードを指定する方法
junos.install_config機能を使用すると、さまざまな設定モードで変更を加えることができます。デフォルトでは、この関数はconfigure exclusiveモードを使用して候補コンフィギュレーションデータベースに変更を加えます。configure exclusive モードでは、関数が要求された設定変更を行う必要がある限り、候補のグローバル設定(共有設定データベースとも呼ばれる)がロックされます。データベースをロックすると、ロックが解除されるまで、他のユーザーがデータベースを変更したり、データベースの変更をコミットしたりできなくなります。
別のモードを指定するには、 mode パラメーターを目的のモードと同じに設定します。サポートされているモードは、 batch、 dynamic、 ephemeral、 exclusive、および privateです。各モードの詳細については、 CLIユーザーガイドを参照してください。
例えば、以下のコマンドは、 configure private モードでコンフィギュレーションを変更し、候補コンフィギュレーションのプライベートコピーを開きます。
saltuser@salt-master:~$ sudo salt 'router1' junos.install_config 'salt://configs/mpls-config.set' mode=private
router1:
----------
message:
Successfully loaded and committed!
out:
True
同様に、この引数を Salt 状態ファイルに含めることもできます。
saltuser@salt-master:~$ cat /srv/salt/junos_mpls_config.sls
Install MPLS Config:
junos.install_config:
- name: salt://configs/mpls-config.set
- mode: private
junos.install_config機能を使って、このデータベースをサポートするデバイス上の一時設定データベースを更新することもできます。一時データベースは、Junos OS を実行しているデバイスで設定更新を実行するための高速なプログラムインターフェイスを提供する代替設定データベースです。この機能を使用するには、Salt バージョン 3001 および Junos PyEZ リリース 2.1.3 以降が必要です
一時的な設定データベースは高度な機能であり、誤って使用すると、デバイスの動作に深刻な悪影響を与える可能性があります。詳細については、「 エフェメラル構成データベースについて」を参照してください。
一時設定データベースのデフォルトインスタンスを設定するには、 mode 引数を ephemeral に設定します。例えば:
saltuser@salt-master:~$ cat /srv/salt/junos_ephemeral_config.sls
Install MPLS config in default ephemeral instance:
junos.install_config:
- name: salt://configs/mpls-ephemeral-config.set
- mode: ephemeral
エフェメラル構成データベースのユーザー定義インスタンスを設定するには、 mode 引数を ephemeral に設定し、 ephemeral_instance 引数をインスタンスの名前に設定します。
saltuser@salt-master:~$ cat /srv/salt/junos_ephemeral_instance_config.sls
Install MPLS config in ephemeral instance:
junos.install_config:
- name: salt://configs/mpls-ephemeral-instance-config.set
- mode: ephemeral
- ephemeral_instance: eph1
読み込み操作の指定方法
junos.loadおよびjunos.install_config機能を使用して、load merge、load replace、load override、またはload update操作を使用して設定変更を読み込むことができます。目的の読み込み操作を指定するには、その関数に適切な引数を含めたり省略したりします。ロード操作を指定しない場合、デフォルトは load replace です。表 2 は、各タイプのロード操作に必要な引数をまとめたものです。
ロード操作 |
関数の引数 |
形容 |
|---|---|---|
|
|
読み込んだコンフィギュレーションを既存のコンフィギュレーションにマージします。 |
|
|
コンフィギュレーション全体をロードされたコンフィギュレーションに置き換えます。 |
|
– |
読み込んだコンフィギュレーションを既存のコンフィギュレーションにマージしますが、既存のコンフィギュレーションのステートメントを、ロードされたコンフィギュレーションの |
|
|
読み込まれた完全な設定を既存の設定と比較します。読み込まれたコンフィギュレーションで異なる各構成要素は、既存のコンフィギュレーション内の対応するエレメントを置き換えます。コミット操作中は、変更された構成要素の影響を受けるシステム プロセスのみが新しい設定を解析します。 |
次のコマンドは、ターゲット・デバイス上のコンフィギュレーション全体を指定されたコンフィギュレーションに置き換えてコミットします。RPC タイムアウトは、完全な設定を読み込んでコミットするのに十分な時間を確保するために増加します。
saltuser@salt-master:~$ sudo salt 'router1' junos.install_config overwrite=True 'salt://configs/junos-complete-config.conf' dev_timeout=60
同等の状態ファイルは次のとおりです。
Replace complete configuration:
junos.install_config:
- name: salt://configs/junos-complete-config.conf
- overwrite: True
- dev_timeout: 60
読み込むコンフィギュレーション・データのフォーマットを指定する方法
junos.load および junos.install_config 機能を使用すると、サポートされている標準フォーマットの 1 つを使用して Junos OS を実行しているデバイスを設定できます。設定データは、部分的または完全な設定または Jinja2 テンプレートを含むファイルから読み込むことができます。データは、テキスト、Junos XML要素、Junos OSsetコマンド、またはJSONとして提供できます。
構成データの形式を指定するには、適切な拡張機能を構成ファイルに追加するか、関数呼び出しに format 引数を明示的に含めます。 表 3 は、構成データでサポートされている形式と、ファイル拡張子と format パラメーターに対応する値をまとめたものです。 format 引数を含めると、ファイル拡張子で示される形式が上書きされます。
設定データのフォーマット |
ファイル拡張子 |
format パラメーター |
|---|---|---|
CLI コンフィギュレーション ステートメント(テキスト) |
.conf |
|
JavaScript Object Notation(JSON) |
.json |
|
Junos OS |
。セット |
|
Junos XML の要素 |
.xml |
|
Junos OSを実行するデバイスは、Junos OS リリース16.1R1以降、JSON形式での設定データの読み込みをサポートしています。
コンフィギュレーション・データのロード方法
junos.load および junos.install_config 機能を使用すると、部分的または完全な設定または Jinja2 テンプレートを含むファイルから設定データを読み込むことができます。このファイルは、Salt マスターまたはプロキシ ミニオン サーバに配置できます。関数は、salt:// 表記を使用して Salt マスター上のパスを指定し、絶対パスを使用してプロキシ ミニオン サーバー上のパスを指定する必要があります。ファイルが、構成データの形式を示すために受け入れられるファイル拡張子の 1 つを使用しない場合は、関数呼び出しに format 引数も含めて、データの形式を指定する必要があります。
表 4 は、使用できる構成データ・ソースについて説明し、ファイルの場所を指定するために必要な実行および状態関数の引数をリストしています。実行関数では、位置引数として、または path キーワードを使用してパスを指定できます。
構成データソース |
形容 |
場所 |
実行関数の引数 |
状態関数の引数 |
|---|---|---|---|---|
構成データ・ファイル |
ASCIIテキスト、Junos XML要素、Junos OS |
ソルトマスター - salt:// 表記を使用 プロキシ ミニオン サーバ - 絶対パスを使用 |
|
|
Jinja2 テンプレート ファイル |
ASCIIテキスト、Junos XML要素、Junos OS 関数呼び出しに |
ソルトマスター - salt:// 表記を使用 プロキシ ミニオン サーバ - 絶対パスを使用 |
|
|
たとえば、次のファイルには、2 つの op スクリプトを構成する Junos OS set コマンドが含まれています。ファイルの拡張子は、構成データの形式を示します。
saltuser@salt-master:~$ cat /srv/salt/configs/op-scripts.set set system scripts op file bgp.slax set system scripts op file ospf.slax
次のSaltコマンドは、 junos.install_config 実行機能を使用して、ターゲット・デバイスに設定をロードしてコミットします。パスは位置引数として提供されます。
saltuser@salt-master:~$ sudo salt 'router1' junos.install_config 'salt://configs/op-scripts.set'
router1:
----------
message:
Successfully loaded and committed!
out:
True
同等の状態ファイルは次のとおりです。
saltuser@salt-master:~$ cat /srv/salt/junos-config-op-scripts.sls
Installing op scripts:
junos.install_config:
- name: salt://configs/op-scripts.set
- comment: committed using Salt
saltuser@salt-master:~$ sudo salt 'router1' state.apply junos-config-op-scripts
router1:
----------
ID: Installing op scripts
Function: junos.install_config
Name: salt://configs/op-scripts.set
Result: True
Comment:
Started: 04:19:59.819155
Duration: 14853.384 ms
Changes:
----------
message:
Successfully loaded and committed!
out:
True
Summary for router1
------------
Succeeded: 1 (changed=1)
Failed: 0
------------
Total states run: 1
Total run time: 14.853 s
junos.install_config機能は、候補コンフィギュレーションと要求されたコンフィギュレーションの差分を自動的に実行します。この関数は、変更があった場合にのみ設定を適用します。同じ設定を 2 回目に適用しようとすると、次の例に示すように、junos.install_config 関数は設定がすでに適用されていることを示すメッセージを返し、再度ロードしてコミットすることはありません。
saltuser@salt-master:~$ sudo salt 'router1' state.apply junos-config-op-scripts
router1:
----------
ID: Installing op scripts
Function: junos.install_config
Name: salt://configs/op-scripts.set
Result: True
Comment:
Started: 06:01:52.365353
Duration: 778.843 ms
Changes:
----------
message:
Configuration already applied!
out:
True
Summary for router1
------------
Succeeded: 1 (changed=1)
Failed: 0
------------
Total states run: 1
Total run time: 778.843 ms
Jinja2 テンプレートを使用してコンフィギュレーション・データを読み込む方法
junos.load 関数と junos.install_config 実行関数と状態関数では、設定データJunos OSための Jinja2 テンプレートの使用がサポートされています。Jinja は Python 用のテンプレートエンジンで、事前定義されたテンプレートからドキュメントを生成できます。目的の言語のテキスト ファイルであるテンプレートは、式と変数を使用して柔軟性を提供します。JINJA2 テンプレートを使用すると、ASCII テキスト、Junos XML 要素、Junos OS set コマンド、JSON など、サポートされている構成形式の 1 つでJunos OS構成データを作成できます。関数は、Jinja2 テンプレートと提供された変数のディクショナリを使用して、構成データをレンダリングします。
Jinja2 テンプレートは、特に類似した設定スタンザに対して、設定データを生成するための強力な方法を提供します。例えば、デバイス上の各インターフェイスに同じ設定ステートメントを手動で追加する代わりに、インターフェイスのリストを反復処理し、それぞれに必要な設定ステートメントを作成するテンプレートを作成できます。Jinjaでは、ブロックは「{%」と「%}」で区切られ、変数は「{{」と「}}」で囲まれます。
Jinja2 テンプレートを読み込むには、 junos.load または junos.install_config 関数呼び出しに次のパラメーターを含める必要があります。
[テンプレート パス(Template path)]: 構成データのロード方法の説明に従って、Salt マスター サーバまたはプロキシ ミニオン サーバ上のテンプレート ファイルへのパスを指定します。
[テンプレート形式(Template format)]:テンプレート ファイルが、受け入れ可能なファイル拡張子の 1 つを使用して形式を指定していない場合、設定データの形式を示すために
format引数を設定します。形式の指定については、 How to Specify the Format of the Configuration Data to Loadを参照してください。テンプレート変数 - テンプレートは、ピラーや粒度データで定義されているものなどの Salt 内部変数を参照できます。Salt システム内でまだ定義されていない変数は、
template_vars引数で指定する必要があります。template_vars値は、Jinja2 テンプレートをレンダリングするために必要なキーと値のディクショナリです。手記:テンプレートにピラー データ、グレイン データ、関数などの Salt 内部変数のみが含まれている場合は、テンプレートをレンダリングするために
junos.install_config関数でtemplate_vars: Trueを定義する必要がある場合があります。
次のサンプル Jinja2 テンプレートは、特定のリストの各インターフェイスに対して論理ユニット 0 で MPLS を有効にする設定データを生成し、MPLS および RSVP プロトコルの下でインターフェイスも設定します。
saltuser@salt-master:~$ cat /srv/salt/configs/junos-config-mpls-jinja2-template.conf
interfaces {
{% for item in template_vars['interfaces'] %}
{{ item }} {
description "{{ template_vars['description'] }}";
unit 0 {
family {{ template_vars['family'] }};
}
} {% endfor %}
}
protocols {
mpls {
{% for item in template_vars['interfaces'] %}
interface {{ item }};
{% endfor %}
}
rsvp {
{% for item in template_vars['interfaces'] %}
interface {{ item }};
{% endfor %}
}
}
次のコマンドは、Jinja2テンプレートと template_vars で定義された変数を使用して設定データをレンダリングし、ターゲットホストにロードしてコミットします。
saltuser@salt-master:~$ sudo salt 'router1' junos.install_config 'salt://configs/junos-config-mpls-jinja2-template.conf' template_vars='{ "interfaces" : ["ge-1/0/1", "ge-1/0/2", "ge-1/0/3"], "description" : "MPLS interface", "family" : "mpls" }'
router1:
----------
message:
Successfully loaded and committed!
out:
True
次の状態ファイルは、同じ構成を読み込みます。構成の違いは、プロキシ ミニオン サーバ上の diffs_file ファイルに保存されます。
saltuser@salt-master:~$ cat /srv/salt/junos_install_config_mpls.sls
Install Junos OS config:
junos.install_config:
- name: 'salt://configs/junos-config-mpls-jinja2-template.conf'
- comment: committed using Salt
- diffs_file: /home/saltuser/junos-config-mpls-diff
- template_vars:
interfaces: ['ge-1/0/1', 'ge-1/0/2', 'ge-1/0/3']
description: MPLS interface
family: mpls
状態を適用すると、Salt は設定をレンダリングし、デバイス上に設定を読み込んでコミットします。
saltuser@salt-master:~$ sudo salt 'router1' state.apply junos_install_config_mpls
router1:
----------
ID: Install Junos OS config
Function: junos.install_config
Name: salt://configs/junos-config-mpls-jinja2-template.conf
Result: True
Comment:
Started: 05:28:51.575045
Duration: 23675.957 ms
Changes:
----------
message:
Successfully loaded and committed!
out:
True
Summary for router1
------------
Succeeded: 1 (changed=1)
Failed: 0
------------
Total states run: 1
Total run time: 23.676 s
この関数は、以下の設定データを生成し、デバイス上の候補コンフィギュレーションにロードしてコミットします。
interfaces {
ge-1/0/1 {
description "MPLS interface";
unit 0 {
family mpls;
}
}
ge-1/0/2 {
description "MPLS interface";
unit 0 {
family mpls;
}
}
ge-1/0/3 {
description "MPLS interface";
unit 0 {
family mpls;
}
}
}
protocols {
mpls {
interface ge-1/0/1.0;
interface ge-1/0/2.0;
interface ge-1/0/3.0;
}
rsvp {
interface ge-1/0/1.0;
interface ge-1/0/2.0;
interface ge-1/0/3.0;
}
}
設定をコミットする方法
設定を変更した後、設定をコミットして、デバイス上でアクティブな設定にする必要があります。 junos.install_config、 junos.rollback、および junos.set_hostname 機能は、要求された設定変更をロードし、コミットチェックとコミット操作を自動的に実行します。また、個別の junos.commit_check 機能と junos.commit 機能を使用して、コミットチェックやコミット操作を実行できます。たとえば、 junos.load 機能を使用して設定を更新した後などです。
Junos OS CLIには、コミットコメントの追加や複数のルーティングエンジン上の設定の同期など、コミット操作のオプションが用意されています。これらのオプションの一部は、Junos の実行および状態モジュール機能でサポートされています。 表 5 は、使用可能なコミット オプションと、それらをサポートする機能の概要を示しています。サポートされている引数は、実行関数と状態関数の両方で有効です。
関数の引数 |
形容 |
引数をサポートする関数 |
CLIコマンドに相当するもの |
|---|---|---|---|
|
そのコミット操作のコメントを、システムログファイルとデバイスのコミット履歴に記録します。 |
|
|
|
最初のコミット後、指定された時間内にコミット操作を確認することを要求します。それ以外の場合は、以前にコミットされた設定にロールバックします。 引数を |
|
|
|
コミット プロセスに関する詳細情報を返します。 |
|
|
|
指定された値をタイムアウトとして使用して、操作の完了を待ちます。 |
|
– |
|
もう一方のルーティング エンジンで開いている設定セッションまたはコミットされていない設定変更がある場合でも、両方のルーティング エンジンで設定を同期してコミットルーティングエンジン。 |
|
|
|
両方のルーティングエンジンの設定を同期し、コミットします。 |
|
|
コミットコメント
設定をコミットする際に、コミットされた変更の目的を説明する簡単なコメントを含めることができます。変更を説明するコメントをログに記録するには、 comment 引数とメッセージ文字列を含めます。例えば:
saltuser@salt-master:~$ sudo salt 'router1' junos.commit comment='Committed using Salt'
同様に、状態ファイルでは、次のようになります。
saltuser@salt-master:~$ cat /srv/salt/junos_install_mx_config.sls
Install Junos OS config:
junos.install_config:
- name: salt://configs/mx-config-common.set
- comment: Committed using Salt
コミットコメントは、コミットのシステムログメッセージに含まれ、コミット履歴にも記録されます。
saltuser@salt-master:~$ sudo salt 'router1' junos.cli 'show system commit'
router1:
----------
message:
0 2019-08-05 15:08:01 PDT by saltuser via netconf
Committed using Salt
...
out:
True
コミット確認済み
候補の構成をコミットする場合、コミットを恒久的なものにするための明示的な確認を要求することができます。指定された時間内にコミットが確認されない場合、デバイスは自動的にロードされ、以前にコミットされた設定をコミットします(ロールバックします)。確認されたコミット操作は、設定変更が正しく機能し、デバイスへの管理アクセスが妨げられないことを確認するのに便利です。変更によってアクセスができなくなったり、その他のエラーが発生した場合は、ロールバック期限が過ぎた後、以前の設定への自動ロールバックによってデバイスへのアクセスが復元されます。
最初のコミット後、指定された時間内にコミット操作を確認するように要求するには、 confirm=minutes 引数を含めます。許容範囲は 1 から 65,535 分です。また、デフォルトの時間である 10 分を使用するように confirm=True を指定することもできます。
以下のコマンドでは、15 分以内にコミットを確認する必要があります。
saltuser@salt-master:~$ sudo salt 'router1' junos.install_config 'salt://configs/mx-config-common.set' confirm=15
router1:
----------
message:
Successfully loaded and committed!
out:
True
コミット操作を確認するには、 junos.commit または junos.commit_check 関数を呼び出します。
saltuser@salt-master:~$ sudo salt 'router1' junos.commit comment='Confirming commit using Salt'
router1:
----------
message:
Commit Successful.
out:
True
コミットの詳細
junos.commit 機能を使用して設定をコミットする場合、detail=True 引数を含めることで、コミット操作全体の詳細を確認できます。この引数を含めると、関数はコミット プロセスに関する詳細情報を返します。
saltuser@salt-master:~$ sudo salt 'router1' junos.commit detail=True
router1:
----------
message:
----------
routing-engine:
----------
name:
re0
progress-indicator:
|_
----------
message:
Obtaining lock for commit
timestamp:
2019-08-14 11:17:50 PDT
|_
----------
message:
updating commit revision
timestamp:
2019-08-14 11:17:50 PDT
...
コミット同期
junos.commit 機能を使用して設定をコミットする場合、sync=True 引数を含めることで、デュアル ルーティングエンジン システムの両方のルーティング エンジンで設定を同期およびコミットできます。例えば:
saltuser@salt-master:~$ sudo salt 'router1' junos.commit sync=True
sync=True 引数を含めると、デバイスはローカルルーティングエンジンに保存された候補コンフィギュレーションを他のルーティングエンジンにコピーし、候補の構文の正しさを検証し、両方のルーティングエンジンにコミットします。もう一方のルーティングエンジンで開いている設定セッションやコミットされていない設定変更がある場合でも、commit synchronize操作を強制的に成功させるには、force_sync=True 引数を使用します。この引数を含めると、デバイスは、設定を同期してコミットする前に、もう一方のルーティングエンジン上の設定セッションを終了します。
コミットタイムアウトの
RPC がタイムアウトする既定の時間は 30 秒です。大規模な設定変更は、この値を超える可能性があり、設定をアップロードしてコミットする前に操作がタイムアウトする可能性があります。デフォルトのタイムアウト間隔よりも長いコミット時間を必要とする可能性のある設定変更に対応するには、 dev_timeout=seconds 引数を含め、タイムアウト間隔を適切な値に設定します。例えば:
saltuser@salt-master:~$ sudo salt 'router1' junos.install_config 'salt://configs/junos_mx_config.conf' dev_timeout=60
saltuser@salt-master:~$ cat /srv/salt/junos_install_mx_config.sls
Install Config:
junos.install_config:
- name: salt://configs/junos_mx_config.conf
- dev_timeout: 60
設定をロールバックする方法
Junos OSを実行するデバイスは、プラットフォームに応じて、最近コミットされた設定と最大49個の以前の設定のコピーを保存します。保存されている設定のいずれかにロールバックできます。これは、設定の変更によって望ましくない結果が発生し、既知の動作設定に戻したい場合に便利です。設定のロールバックは、デバイスの設定を変更するプロセスと似ていますが、設定データを読み込む代わりにロールバックを行い、候補の設定全体を以前にコミットされた設定に置き換えます。
salt.modules.junos.rollback実行機能とsalt.states.junos.rollbackステート機能を使うことで、Junos OSを実行しているデバイス上で、以前にコミットした設定に設定をロールバックさせることができます。設定をロールバックしてコミットするには、関数を実行し、id 引数を目的のロールバック設定の ID に設定します。有効な ID 値は、最後にコミットされた設定の 0(ゼロ)から、保存された以前の設定の数より 1 少ない数(最大は 49)です。id キーワードを省略すると、デフォルトは 0 になります。
例えば、以下のコマンドは、以前にコミットされた設定に設定をロールバックしてコミットします。
saltuser@salt-master:~$ sudo salt 'router1' junos.rollback id=1 comment='Rolling back configuration using Salt'
router1:
----------
message:
Rollback successful
out:
True
設定をロールバックし、後で参照できるように設定の違いをファイルに記録するには、 diffs_file 引数を含め、相違点が書き込まれるプロキシ ミニオン サーバ上のファイルのパスに設定します。
saltuser@salt-master:~$ sudo salt 'router1' junos.rollback id=1 comment='Rolling back configuration using Salt' diffs_file='/home/saltuser/router1-rollback-diff'
router1:
----------
message:
Rollback successful
out:
True
差分は、プロキシ ミニオン サーバ上の指定されたファイルに保存されます。
saltuser@minion:~$ cat /home/saltuser/router1-rollback-diff [edit system scripts op] - file bgp-neighbors.slax;