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 Object Notation(JSON)としてフォーマットされた静的またはテンプレート化された設定データで構成された非構造化設定変更をユーティリティを使用 jnpr.junos.utils.config.Config する方法について説明します。Configまた、このユーティリティを使用すると、以前にコミットされた設定にロールバックしたり、レスキュー設定に戻すことができます。

設定プロセスの概要

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

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

  1. 使用して lock() 設定をロックする

  2. 以下のいずれかのアクションを実行して、設定を変更します。

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

  4. を使用して設定のロックを解除する unlock()

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

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

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

設定モードの指定

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

メモ:

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 OSsetコマンド、JSONが含まれます。設定データの形式を指定するには、ユーティリティ load() メソッドに パラメーターConfigformat明示的に含めるか、適切な拡張子を設定データ ファイルに追加します。形式を指定しない場合、デフォルトは 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 パラメーターが overwriteTrue設定されている場合、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 デバイス上または Junos デバイスから到達可能なリモート URL にあるファイルへのパス。FTP または HTTP(ハイパーテキスト転送プロトコル)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としてフォーマットされた設定データをローカルまたはリモートのファイルから読み込むことができます。

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

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

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

URL の指定の詳細については、 Junos XML プロトコル<load-configuration> 操作の属性を参照してくださいurl

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

Jinja2テンプレートまたはテンプレートファイルからの設定データの読み込みについては、 Jinja2テンプレートを使用して設定データを読み込むを参照してください。

文字列から設定データを読み込む

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

次のコードスニペットは、さまざまな形式の設定データと対応するメソッドの呼び出しを含む、サンプルのマルチライン文字列を load() 示しています。オプション format のパラメーターは、明確にするために各例に明示的に含まれています。例では、 cu ユーティリティの Config インスタンスで、ターゲットのJunosデバイスで動作します。

  • 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 は、Jinja2 テンプレートを使用して Junos 設定データをレンダリングすることをサポートしています。JinjaはPython用のテンプレートエンジンで、定義済みのテンプレートからドキュメントを生成できます。テンプレートは、目的の言語のテキスト ファイルであり、式と変数を使用する柔軟性を提供します。ASCIIテキスト、Junos XML要素、Junos OS set コマンド、JSONを含む、サポートされている設定形式のいずれかで、Jinja2テンプレートを使用してJunos設定データを作成できます。Junos PyEZ は、Jinja2 テンプレートと指定された変数辞書を使用して設定データをレンダリングします。

Jinja2 テンプレートは、特に類似の設定スタンザに対して、設定データを生成する強力な方法を提供します。例えば、デバイス上の各インターフェイスに同じ設定ステートメントを手動で追加するのではなく、インターフェイスのリストを繰り返し作成し、各インターフェイスに必要な設定ステートメントを作成するテンプレートを作成できます。Jinjaでは、ブロックは「」と「{%%}」で区切られ、変数は「」と「{{}}」で囲まれています。

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

Junos PyEZコードでは、Jinja2テンプレート変数の対応する辞書は次のとおりです。

Junos PyEZ コードで Jinja2 テンプレートを読み込むには、テンプレート ファイルのパスにパラメーターを設定template_pathし、パラメーターをtemplate_varsテンプレート変数辞書に設定します。受け入れ可能なファイル拡張子のいずれかを使用して構成データの形式を示さない場合は、メソッド パラメーター リストに パラメーターをformatload()含める必要があります。

メモ:

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

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() 呼び出し、ロールバック設定のIDに引数を設定 rb_id します。有効な ID 値は、0(直近にコミットされた設定ではゼロ)から、保存された以前の設定数よりも 1 少ない値(最大 49)。です。メソッド呼び出しでこのパラメーターを省略すると、デフォルトは 0 になります。

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

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

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

レスキュー設定では、既知の機能する設定や、いつでも復元できる既知の状態の設定を定義できます。レスキュー設定は、既知の設定に戻す必要がある場合、またはルーターやスイッチの設定やバックアップ設定ファイルが修理を超えて損傷した場合に最後のリゾートとして使用します。レスキュー設定を作成すると、デバイスは最近コミットされた設定をレスキュー設定として保存します。

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

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

次の例では、レスキュー設定がある場合、レスキュー設定を読み込み、コミットします。

レスキュー設定の作成、取得、削除、その他の例については、 Junos PyEZ を使用した Junos デバイスでのレスキュー設定の管理を参照してください。

設定のコミット

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

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

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