Salt を使用した 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 を実行している管理対象デバイスのホスト名を設定し、変更をコミットします。 |
||
候補コンフィギュレーションの排他ロックを解除します。 |
設定変更の基本的なプロセスは、設定データベースをロックし、設定変更を読み込み、設定をコミットしてアクティブにしてから、設定データベースのロックを解除することです。対応する関数を使用して各操作を個別に実行することも、関数を使用して 1 つの関数 junos.install_config
呼び出しですべての操作を実行することもできます。
デフォルトでは、この機能は junos.install_config
mode を使用してconfigure exclusive
候補の構成データベースに変更を加え、構成データベースを自動的にロックおよびロック解除します。この関数は、読み込まれたコンフィギュレーションを現在のコンフィギュレーションと比較し、変更がある場合にのみ新しいコンフィギュレーションを適用します。関数が設定を変更すると、AND commit
演算が実行されますcommit check
。
この関数は設定ワークフロー全体を処理するため、設定の変更に使用することをお勧めしますjunos.install_config
。この機能を使用すると、設定の差異をファイルに保存し、異なる設定モードを使用することもできます。例えば、コンフィギュレーション・モードの指定方法で説明されているように、モードを使用してconfigure private
候補コンフィギュレーションのプライベート・コピーを変更することができます。
または junos.install_config
関数を使用してjunos.load
新しい構成データをロードする場合、ロード操作、および変更のソースと形式を指定できます。
ロード操作—ロード操作は、コンフィギュレーションの候補にコンフィギュレーション・データをロードする方法を決定します。これらの関数は、マージ、オーバーライド、置換、更新など、Junos OS CLI で使用できるものと同じロード操作の多くをサポートしています。詳細については、「 読み込み操作を指定する方法」を参照してください。
フォーマット - サポートされている標準のフォーマットのいずれかを使用して、Junos OSを実行するデバイスを設定できます。設定データまたは Jinja2 テンプレートを、テキスト、Junos XML 要素、Junos OS
set
コマンド、または JSON として提供できます。詳細については、「 読み込む構成データの形式を指定する方法」を参照してください。設定データソース:部分的または完全な設定、またはJinja2テンプレートを含むファイルから設定データを読み込むことができます。詳細については、「構成データを読み込む 方法 」および「 Jinja2 テンプレートを使用して構成データを読み込む方法」を参照してください。
設定を変更した後、デバイス上でアクティブな設定になるように設定をコミットする必要があります。、 、および junos.set_hostname
関数はjunos.install_config
、junos.rollback
構成への変更を自動的にコミットします。また、junos.commit
この関数を実行してコミット操作を実行することもできます。さまざまな関数の動作とサポートされているコミット オプションについては、「 構成をコミットする方法」を参照してください。
新しい設定データを読み込むだけでなく、この junos.rollback
機能を使用して、以前にコミットした設定に設定をロールバックできます。この関数は、更新された設定を自動的にコミットします。詳細については、「 構成をロールバックする方法」を参照してください。
構成データベースをロックおよびロック解除する方法
候補構成を変更する前にロックして、ロックが解除されるまで他のユーザーまたはアプリケーションが構成を更新できないようにすることができます。これは、CLI の コマンドと configure exclusive
同等です。コミット操作は、コミットを要求するユーザーやアプリケーションによる変更だけでなく、候補となる構成内のすべての変更に適用されるため、特に複数のユーザーに構成の変更が許可されているデバイスでは、変更を行う前に構成をロックすることをお勧めします。
この関数は、モードを使用してconfigure exclusive
候補の構成データベースを変更します。このjunos.install_config
モードでは、構成データベースが自動的にロックされ、変更が読み込まれてコミットされ、データベースのロックが解除されます。ただし、ロード操作とコミット操作を別々に実行する必要がある場合は (たとえば、 および 関数を使用して)、および 実行関数または状態関数を使用してjunos.load
junos.lock
、データベースを明示的にロックおよびjunos.commit
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
を使用すると、さまざまな設定モードで変更を行うことができます。デフォルトでは、関数は mode を使用して 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
一時的な構成データベースのユーザー定義インスタンスを構成するには、引数を に設定し、引数ephemeral
をmode
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
、 、 、 、load override
load replace
または load update
の操作を使用してload merge
設定変更を読み込むjunos.install_config
ことができます。目的のロード操作を指定するには、その関数の適切な引数を含めるか省略します。ロード操作を指定しない場合、デフォルトは 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
機能を使用すると、サポートされている標準の形式のいずれかを使用して、Junos OS を実行するデバイスを設定できます。部分的または完全な構成、または Jinja2 テンプレートを含むファイルから構成データを読み込むことができます。データは、テキスト、Junos XML要素、Junos OS set
コマンド、またはJSONとして提供できます。
構成データの形式を指定するには、構成ファイルに適切な拡張子を追加するか、関数呼び出しに引数を format
明示的に含める必要があります。 表 3 は、構成データでサポートされている形式と、ファイル拡張子と format
パラメーターに対応する値をまとめたものです。引数を含める format
と、ファイル拡張子で示される形式が上書きされます。
構成データ形式 |
ファイル拡張子 |
フォーマットパラメータ |
---|---|---|
CLI 設定ステートメント(テキスト) |
。Conf |
|
JavaScript Object Notation(JSON) |
。Json |
|
Junos OS |
。設定 |
|
Junos XML 要素 |
。Xml |
|
Junos OSを実行するデバイスは、Junos OSリリース16.1R1以降、JSON形式の設定データの読み込みをサポートしています。
構成データを読み込む方法
および junos.install_config
関数を使用するとjunos.load
、部分的または完全な構成、または Jinja2 テンプレートを含むファイルから構成データを読み込むことができます。ファイルは、Saltマスターまたはプロキシミニオンサーバーに配置できます。関数は、salt:// 表記を使用してSaltマスター上のパスを指定し、絶対パスを使用してプロキシミニオンサーバー上のパスを指定する必要があります。ファイルが構成データの形式を示すために受け入れられたファイル拡張子のいずれかを使用しない場合、関数呼び出しには、データの形式を指定する引数も含め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
関数は、候補コンフィギュレーションと要求されたコンフィギュレーションの差分を自動的に実行します。この関数は、変更がある場合にのみ構成を適用します。同じ設定をもう一度適用しようとすると、次の例に示すように、関数は設定がすでに適用されているというメッセージを返し、 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.install_config
実行および状態関数は、junos.load
Junos OS 設定データ用の Jinja2 テンプレートの使用をサポートしています。Jinja は、定義済みのテンプレートからドキュメントを生成できる Python 用のテンプレート エンジンです。テンプレートは、目的の言語のテキスト ファイルであり、式と変数を使用して柔軟性を提供します。Junos OSの設定データは、サポートされている設定フォーマット(ASCIIテキスト、Junos XML要素、Junos OSset
コマンド、JSONなど)でJinja2テンプレートを使用して作成できます。これらの関数は、Jinja2 テンプレートと提供される変数のディクショナリを使用して、構成データをレンダリングします。
Jinja2 テンプレートは、特に同様の構成スタンザの場合、構成データを生成するための強力な方法を提供します。例えば、デバイスの各インターフェイスに同じ設定ステートメントを手動で追加する代わりに、インターフェイスのリストを反復処理してそれぞれに必要な設定ステートメントを作成するテンプレートを作成することができます。Jinja では、ブロックは '{%
' と '' で区切られ、変数は '' と '' {{
%}
}}
で囲まれます。
Jinja2 テンプレートを読み込むには、またはjunos.install_config
関数呼び出しにjunos.load
次のパラメーターを含める必要があります。
テンプレートパス— 設定データを読み込む方法の説明に従って、Salt マスターまたはプロキシミニオンサーバー上のテンプレートファイルへのパスを指定します。
[テンプレート形式(Template format)]:テンプレート ファイルが形式の指定に受け入れられるファイル拡張子の 1 つを使用しない場合、設定データの形式を示す引数を設定します
format
。形式の指定については、「 読み込む構成データの形式を指定する方法」を参照してください。テンプレート変数 - テンプレートは、ピラー データやグレイン データで定義されているような 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.set_hostname
関数はjunos.install_config
、要求された設定変更を読み込み、junos.rollback
コミットチェックとコミット操作を自動的に実行します。また、個々の 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_check
関数をjunos.commit
呼び出します。
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.states.junos.rollback
状態機能を使用するとsalt.modules.junos.rollback
、Junos OS を実行しているデバイスで以前にコミットした設定に設定をロールバックできます。設定をロールバックしてコミットするには、 関数を実行し、引数をid
目的のロールバック設定の ID に設定します。有効なID値は、直近にコミットされたコンフィギュレーションの0(ゼロ)から、以前のコンフィギュレーションに保存されている数(最大49)より1つ少ない値です。キーワードを省略すると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;