Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Junos PyEZ 設定ユーティリティを使用して Junos デバイスを設定する

Junos PyEZを使用すると、Junosデバイス上で構造化および非構造化の設定変更を行うことができます。このトピックでは、ASCIIテキスト、Junos XMLエレメント、Junos OSsetコマンド、またはJavaScriptオブジェクト記法(JSON)としてフォーマットされた静的またはテンプレート化された設定データで構成される非構造化設定変更を行うために、このユーティリティを使用する jnpr.junos.utils.config.Config 方法について説明します。このConfigユーティリティでは、以前にコミットした設定にロールバックしたり、レスキュー設定に戻すこともできます。

構成プロセスの概要

Junosデバイスに正常に接続した後、ユーティリティを使用して Config デバイスを設定するには、まずオブジェクトを作成し Config 、インスタンスに関連付け Device ます。例えば:

デフォルトでは、Junos PyEZは候補のグローバル構成( 共有構成データベースとも呼ばれます)を更新します。設定変更の基本的なプロセスは、設定データベースをロックし、設定変更を読み込み、設定をコミットしてアクティブにしてから、設定データベースのロックを解除することです。Junos PyEZ Config ユーティリティを使用して、共有設定データベースの非構造化設定変更を行う場合、ここで概説する適切なインスタンスメソッドを呼び出すことで、以下のアクションを実行できます。

  1. を使用して lock() 構成をロックします。

  2. 次のいずれかの操作を実行して、構成を変更します。

    • 新しい完全なコンフィギュレーションを読み込むとき、またはコンフィギュレーションの特定の部分を変更するときに呼び出す load()

    • コール rollback() を以前にコミットした設定に戻す(設定のロールバックを参照)。

    • レスキュー設定を読み込むの説明に従って、レスキュー設定を読み込むための呼び出し rescue()

  3. 「設定をコミットする」および「Junos PyEZ を使用して設定をコミットする」の説明に従って、を使用して設定を commit() コミットします。

  4. 次を使用して構成のロックを解除します。 unlock()

コンテキストマネージャー (with ... as 構文) を使用してオブジェクトインスタンスを作成すること Config もでき、特定の構成モードではオブジェクトインスタンスを使用する必要があります。これらのモードでは、Junos PyEZ が自動的に設定をロックおよびロック解除します。詳細については、次を参照してください: 構成モードを指定する

このメソッドを使用して load() 設定を変更する場合、コンフィギュレーション モードの指定に加えて、ロード操作のタイプ、コンフィギュレーション変更の形式、およびコンフィギュレーション データのソースも指定できます。このユーティリティは Config 、Junos CLI で使用できるものと同じロード操作とフォーマットの多くをサポートしています。詳細については、次を参照してください。

構成データのソースは、ローカル サーバー上のファイル、ターゲット デバイス上のファイル、ターゲット デバイスから到達可能な URL のファイル、または文字列、XML オブジェクト、または Jinja2 テンプレートとして指定できます。構成データ ソースの指定については、次のセクションを参照してください。

設定モードの指定

デフォルトでは、オブジェクトを作成しConfig、設定モードを明示的に指定しない場合、Junos PyEZは候補のグローバル設定を更新します。また、構成データベースを変更するときに使用する別の構成モードを指定することもできます。デフォルト以外のモードを指定するには、コンテキストマネージャーを使用してオブジェクトを作成しConfig、引数をmode目的のモードに設定する必要があります。サポートされているモードにはprivateexclusivedynamicbatchephemeral、および が含まれます。

メモ:

Junos PyEZを使用して、このデータベースをサポートするデバイス上の エフェメラル設定データベース を更新できます。エフェメラルデータベースは、Junosデバイスで設定更新を実行するための高速なプログラムインターフェイスを提供する代替設定データベースです。これは高度な機能であり、誤って使用するとデバイスの動作に深刻な悪影響を与える可能性があります。詳細については、「 エフェメラル構成データベースについて」を参照してください。

デフォルト以外のモードを指定すると、コンテキストマネージャはデータベースのオープンとロック、およびクローズとロック解除を処理します。これにより、意図せずにデータベースをロック状態のままにすることがなくなります。このような場合は、 および commit() メソッドを呼び出すload()だけでデバイスを構成できます。

例えば、次のコードは、候補コンフィギュレーションのプライベート コピーを開く モードを使用して configure private コンフィギュレーションを変更します。

さまざまな設定モードの詳細については、 CLIユーザーガイドJunos PyEZを使用したJunosデバイスの設定を参照してください。

ロード操作を指定する

Junos PyEZは、Junos CLIでサポートされているものと同じロード操作の多くを使用して、設定変更の読み込みをサポートしています。目的のロード操作を指定するには、メソッドにConfig load() 適切なパラメーターを含めるか省略します。

表 1 は、サポートされるロード操作と、対応するload()メソッド引数の概要を示しています。デフォルトでは、Junos PyEZがload replace操作を実行します。別の読み込み操作を使用するには、メソッドでload()対応するパラメーターを に設定しますTrue

表 1: load() メソッドと set() メソッドでロード操作タイプを指定するためのパラメータ

負荷動作

引数

説明

最初にサポートされた Junos PyEZ リリース

load merge

merge=True

読み込んだコンフィギュレーションを既存のコンフィギュレーションとマージします。

1.0

load override

overwrite=True

コンフィギュレーション全体をロードしたコンフィギュレーションに置き換えます。

1.0

load patch

patch=True

パッチ ファイルから構成データを読み込みます。

2.4.0

load replace (デフォルト)

読み込んだコンフィギュレーションを既存のコンフィギュレーションにマージしますが、既存のコンフィギュレーションのステートメントを、読み込んだコンフィギュレーションの というタグを指定した replace: ステートメントに置き換えます。既存のコンフィギュレーションに ステートメントがない場合は、ロードされたコンフィギュレーションに ステートメントが追加されます。

1.0

load update

update=True

完全なコンフィギュレーションを読み込み、既存のコンフィギュレーションと比較します。読み込まれたコンフィギュレーションで異なる各構成要素は、既存のコンフィギュレーションの対応する要素を置き換えます。コミット操作中は、変更された構成要素の影響を受けるシステム プロセスのみが新しい設定を解析します。

2.1.0

次の例では、 load override 候補コンフィギュレーション全体をロードしたコンフィギュレーションに置き換え、候補コンフィギュレーションをコミットしてアクティブにする操作を実行します。

ロードするコンフィギュレーション・データのフォーマットを指定します

Junos PyEZ Config ユーティリティを使用すると、サポートされている標準フォーマットのいずれかを使用してJunosデバイスを設定できます。構成データは、文字列、ファイル、XML オブジェクト、または Jinja2 テンプレート オブジェクトとして提供できます。ファイルには、構成データ スニペットまたは Jinja2 テンプレートを含めることができます。文字列、ファイル、または Jinja2 テンプレート内の設定データを提供する場合、サポートされるデータ形式には、ASCII テキスト、Junos XML 要素、Junos OS set コマンド、および JSON が含まれます。構成データの形式を指定するには、ユーティリティ load() メソッドにパラメーターをformat明示的に含めるか、Config構成データ ファイルに適切な拡張子を追加します。形式を指定しない場合、デフォルトは XML です。

メモ:

Junos PyEZ リリース 1.2 以降、設定データを文字列として指定すると、Junos PyEZ は自動的にフォーマットを検出します。

表 2 は、構成データでサポートされている形式と、ファイル拡張子と format パラメーターに対応する値をまとめたものです。設定データにJunos XMLフォーマットを使用する場合、データを最上位 <configuration> タグで囲む必要があります。

メモ:

NETCONFセッション内で直接デバイスを設定する場合、必要に応じて、ASCIIテキスト、Junos OS set コマンド、またはJSON <configuration-text>としてフォーマットされた設定データを、 、 <configuration-set>、または <configuration-json> タグで囲む必要はありません。

表 2: 構成データの形式を指定する

構成データ形式

ファイル拡張子

フォーマットパラメータ

ASCII テキスト

.conf, .text, .txt

テキスト

JavaScript Object Notation(JSON)

。Json

Json

Junos OS set コマンド

。設定

設定

Junos XML 要素

。Xml

Xml

メモ:

または update パラメーターが overwrite に設定されている場合True、Junos OS set コマンド形式は使用できません。

メモ:

Junos OSリリース16.1R1以降を実行するデバイスは、JSON形式の設定データの読み込みをサポートしています。

構成データの場所を指定する

Junos PyEZでは、設定データを文字列、ファイル、XMLオブジェクト、またはJinja2テンプレートオブジェクトとして読み込むことができます。ファイルには、構成データ スニペットまたは Jinja2 テンプレートを含めることができます。

表 3 は、 load() 構成データの受け渡しまたはその場所の参照に使用するメソッド パラメーターをまとめたものです。ファイル拡張子で示される形式を持つ文字列、XML オブジェクト、またはファイルを使用する場合を除き、メソッド呼び出しにパラメーターを含めて format 、常にデータの形式を指定する必要があります。Jinja2 テンプレートを使用する場合は、必要なテンプレート変数のディクショナリに渡すパラメーターを含め template_vars ます。

表 3: load() メソッドでの設定データの参照

パラメーター

構成データ ソース

説明

format パラメーターの要件

path

ローカルファイル

ASCII テキスト、Junos XML 要素、Junos OS set コマンド、または JSON で書式設定された構成データを含む、ローカル構成管理サーバー上のファイルへのパス。

ファイル拡張子がデータの形式を示していない場合は、 format パラメーターを含める必要があります。

template

Jinja2 テンプレート オブジェクト

プリロードされた Jinja2 テンプレート オブジェクト。

template_varsメソッド引数リストにパラメーターload()を含めて、必要な Jinja2 テンプレート変数を含むディクショナリを参照します。

ファイル拡張子がデータの形式を示していない場合は、 format パラメーターを含める必要があります。

template_path

ローカル Jinja2 テンプレート ファイル

ASCII テキスト、Junos XML 要素、Junos OS set コマンド、または JSON として書式設定された Jinja2 テンプレートを含む、ローカル構成管理サーバー上のファイルへのパス。

template_varsメソッド引数リストにパラメーターload()を含めて、必要な Jinja2 テンプレート変数を含むディクショナリを参照します。

ファイル拡張子がデータの形式を示していない場合は、 format パラメーターを含める必要があります。

url

リモート・ファイル

Junos デバイス上、または FTP またはハイパーテキスト転送プロトコル(HTTP)URL を使用して Junos デバイスから到達可能なリモート URL にあるファイルへのパス。

ファイル拡張子がデータの形式を示していない場合は、 format パラメーターを含める必要があります。

vargs[0]

XML オブジェクト

文字列

XML オブジェクト、または ASCII テキスト、Junos XML 要素、Junos OS set コマンド、または JSON で書式設定された設定データを含む文字列。

この場合、Junos PyEZは設定データのフォーマットを自動的に検出するため、このパラメーターは format 必須ではありません。

ローカルまたはリモートファイルからの設定データのロード

Junos PyEZでは、ローカルまたはリモートのファイルから、ASCIIテキスト、Junos XML要素、Junos OS set コマンド、JSONでフォーマットされた設定データを読み込むことができます。

構成管理サーバー上のローカル ファイルから構成データを読み込むには、メソッドの load() pathパラメーターをファイルの絶対パスまたは相対パスに設定します。例えば:

また、Junosデバイス上にあるファイルや、Junosデバイスから到達可能なURLにあるファイルから、設定データを読み込むこともできます。Junosデバイス上のファイルから構成データをロードするには、パラメーターを url ターゲットデバイス上のファイルの絶対パスまたは相対パスに設定し、ロード操作に必要なその他のパラメーターを含めます。例えば:

リモート URL のファイルから構成データをロードするには、パラメーターを urlリモート・ファイルの FTP ロケーションまたはハイパーテキスト転送プロトコル (HTTP) URL に設定し、ロード操作に必要なその他のパラメーターを含めます。例えば:

URLの指定に関する詳細については、Junos XMLプロトコル<ロード設定>操作の属性を参照してくださいurl

読み込む構成データの形式を指定する」に記載されている、受け入れられるファイル拡張子のいずれかを使用して構成ファイルが構成データの形式を示さない場合は、メソッド パラメーター リストにパラメーターload()を含めてformat形式を指定する必要があります。例えば:

Jinja2 テンプレートまたはテンプレート ファイルからの構成データのロードについては、「 Jinja2 テンプレートを使用した構成データのロード」を参照してください。

文字列からの構成データを読み込む

ASCIIテキスト、Junos XMLエレメント、Junos OS set コマンド、またはJSON形式の設定データを文字列から読み込むには、メソッド引数リストの最初の引数として文字列を含めます load() 。Junos PyEZは文字列内の設定データのフォーマットを自動的に検出するため、この場合、パラメータは format オプションです。

次のコード スニペットは、さまざまな形式の構成データと、 load() 対応するメソッドの呼び出しを含むサンプルの複数行文字列を示しています。省略可能 format なパラメーターは、わかりやすくするために各例に明示的に含まれています。例では、 cu はターゲット Junos デバイス上で動作するユーティリティの Config インスタンスです。

  • ASCIIテキストとしてフォーマットされたコンフィギュレーション・データの場合:

    リストの最初の引数として文字列を指定して設定データを読み込み、オプションで format="text"を指定します。

  • Junos XML 形式の設定データの場合:

    リストの最初の引数として文字列を指定して設定データを読み込み、オプションで format="xml"を指定します。

  • Junos OS set コマンドとしてフォーマットされた設定データの場合:

    リストの最初の引数として文字列を指定して設定データを読み込み、オプションで format="set"を指定します。

  • JSON を使用してフォーマットされた構成データの場合:

    リストの最初の引数として文字列を指定して設定データを読み込み、オプションで format="json"を指定します。

XML オブジェクトとして書式設定された構成データを読み込む

XML オブジェクトとして書式設定された構成データを読み込むには、メソッド引数リストの最初の引数 load() としてオブジェクトを含め、その他の必須パラメーターを指定します。構成データの既定の形式は XML であるため、メソッド呼び出しにパラメーターを format 明示的に含める必要はありません。

次のコードは、XML オブジェクトと、それに対応するメソッドの load() 呼び出しを示しています。

Jinja2テンプレートを使用した設定データの読み込み

Junos PyEZは、Junos設定データのレンダリングにJinja2テンプレートを使用することをサポートしています。Jinja は、定義済みのテンプレートからドキュメントを生成できる Python 用のテンプレート エンジンです。テンプレートは、目的の言語のテキスト ファイルであり、式と変数を使用して柔軟性を提供します。Junos 設定データは、Jinja2 テンプレートを使用して、サポートされている設定形式(ASCII テキスト、Junos XML 要素、Junos OS set コマンド、JSON など)で作成できます。Junos PyEZは、Jinja2テンプレートと提供される変数のディクショナリを使用して、設定データをレンダリングします。

Jinja2 テンプレートは、特に同様の構成スタンザの場合、構成データを生成するための強力な方法を提供します。例えば、デバイスの各インターフェイスに同じ設定ステートメントを手動で追加する代わりに、インターフェイスのリストを反復処理してそれぞれに必要な設定ステートメントを作成するテンプレートを作成することができます。Jinja では、ブロックは '{%' と '%}' で区切られ、変数は '{{' と '}}' で囲まれます。

次のサンプル Jinja2 テンプレートは、特定のリスト内の各インターフェイスの論理ユニット 0 で MPLS を有効にする設定データを生成し、MPLS および RSVP プロトコルでインターフェイスを設定します。

Junos PyEZコードでは、対応するJinja2テンプレート変数のディクショナリは次のとおりです。

Junos PyEZコードにJinja2テンプレートを読み込むには、パラメータをtemplate_pathテンプレートファイルのパスに設定し、パラメータをtemplate_varsテンプレート変数のディクショナリに設定します。構成データの形式を示すために受け入れられるファイル拡張子の 1 つを使用しない場合は、メソッド パラメーター リストにパラメーターload()を含める必要がありますformat

メモ:

プリロードされた Jinja2 Template オブジェクトを指定する場合は、メソッド引数リストのパラメーターload()の代わりにtemplate_pathパラメーターを使用する必要がありますtemplate

Junos PyEZは、Jinja2テンプレートと変数のディクショナリを使用して以下の設定データをレンダリングし、それを候補コンフィギュレーションにロードしてデバイスにコミットします。

次のビデオは、Jinja2テンプレートを使用してJunosデバイスを構成する方法を示す短いPythonセッションを示しています。

Jinja2 の詳細については、 https://jinja.pocoo.org/docs/ にある Jinja2 のドキュメントを参照してください。

設定のロールバック

Junosデバイスには、プラットフォームによってによって、直近にコミットされた設定のコピーと、それ以前の設定が最大49個保存されます。保存されている任意の設定にロールバックできます。これは、設定の変更によって望ましくない結果が生じ、動作確認済みの設定に戻したい場合に有効です。設定のロールバックは、デバイスの設定変更を行うプロセスと似ていますが、設定データを読み込む代わりに、ロールバックを実行し、候補の設定全体を以前にコミットした設定に置き換えます。

Junos PyEZ jnpr.junos.utils.config.Config クラスの rollback() メソッドを使用すると、Junosデバイスの設定をロールバックできます。設定をロールバックするには、メソッド と を rollback() 呼び出し、引数を rb_id ロールバック設定の ID に設定します。有効なID値は、0(直近にコミットされた設定の場合はゼロ)から、以前の設定の保存数(最大49)より1つ減らした値です。メソッド呼び出しでこのパラメーターを省略すると、既定値は 0 になります。

次の例では、復元する設定のロールバック ID の入力を求め、設定をロールバックし、設定の差分を出力してから、設定をコミットしてデバイス上でアクティブな設定にします。

エラー処理を含むより広範な例については、 例:Junos PyEZを使用して設定をロールバックするを参照してください。

レスキュー設定の読み込み

レスキュー設定では、動作確認済みの設定や、いつでも復元できる既知の状態の設定を定義できます。レスキュー設定は、既知の設定に戻す必要がある場合や、ルーターやスイッチの設定、バックアップの設定ファイルが修復できないほど破損した場合の最後の手段として使用します。レスキュー設定を作成すると、デバイスは最後にコミットされた設定をレスキュー設定として保存します。

Junos PyEZ jnpr.junos.utils.config.Config ユーティリティを使用すると、Junosデバイス上のレスキュー設定を管理できます。クラスのインスタンスConfigを作成したら、この rescue() メソッドを使用してレスキュー構成を管理します。レスキュー設定で実行するアクションを指定するには、method action パラメーターをrescue()目的の操作に設定します。

既存のレスキュー構成を候補構成にロードするには、 を指定します action="reload"。レスキュー設定が存在しない場合、ロード操作 Falseは を返します。レスキュー設定を読み込んだ後、設定をコミットして、デバイス上でアクティブな設定にする必要があります。

次の例では、レスキュー設定が存在する場合は、それをロードしてコミットします。

レスキュー設定の作成、取得、削除の詳細およびその他の例については、次を参照してください: Junos PyEZ を使用して、Junos デバイスでレスキュー設定を管理する

設定をコミット

設定を変更した後、デバイス上でアクティブな設定になるように設定をコミットする必要があります。このユーティリティを使用して Config デバイスの非構造化設定変更を行う場合は、 メソッドを呼び出して commit() 候補構成をコミットします。

Junos PyEZスクリプトのコミット操作とサポートされているコミットオプションの詳細については、 Junos PyEZを使用して設定をコミットするを参照してください。

変更履歴テーブル

機能のサポートは、使用しているプラットフォームとリリースによって決まります。 機能エクスプローラー を使用して、機能がプラットフォームでサポートされているかどうかを判断します。

リリース
説明
1.2
Junos PyEZ リリース 1.2 以降、設定データを文字列として指定すると、Junos PyEZ は自動的にフォーマットを検出します。