Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Junos PyEZテーブルでSaltを使用し、Junos OSを搭載したデバイスから運用データや設定データを取得する

ジュニパーネットワークスでは、Salt を使用した Junos OS が動作するデバイスの管理をサポートしており、Junos の実行および状態モジュール(Salt 用)は、管理対象デバイス上で運用タスクや設定タスクを実行するための機能を定義します。 salt.modules.junos.get_table 実行機能と状態関数は、 salt.states.junos.get_table 定義済みまたはカスタムのJunos PyEZテーブルを参照し、Junos OSを実行しているデバイスから運用情報や設定データを抽出できます。

Junos PyEZテーブルについて

Junos PyEZは、Junos OSを実行するデバイスの管理と自動化を可能にするPython用マイクロフレームワークです。Junosプロキシミニオン(Salt用)は、ZeroMQイベントバスを使用してSaltマスターに接続し、Junos PyEZライブラリを使用してJunos OSを実行しているデバイスに接続します。その結果、Saltはデバイスを管理する際にJunos PyEZの機能を活用できます。

Junos PyEZは、 テーブルビューと呼ばれるシンプルなYAML定義を使用して、Junos OSを実行しているデバイスから運用コマンドの出力と設定データを取得し、フィルタリングすることをサポートしています。 Junos PyEZ運用(op)テーブルは運用コマンドやRPCの出力から情報を抽出し、設定テーブルは特定の設定データを取得します。Junos PyEZ jnpr.junos.op モジュールには、いくつかの一般的なRPC用に定義済みのテーブルとビューの定義が含まれています。カスタムのテーブルとビューを作成することもできます。

Salt を使用して Junos OS が動作するデバイスを管理する場合、その junos.get_table 関数は Junos PyEZ テーブルを使用してデバイスからデータを取得できます。この関数は、Junos PyEZディストリビューションに含まれている定義済みの操作テーブルとビューを参照することも、Saltマスターまたは別のプロキシミニオンサーバーに存在するユーザー定義の操作および構成テーブルとビューを参照することもできます。

Junos PyEZのテーブルとビューに関する一般的な情報については、 Junos PyEZ開発者ガイドの以下のセクションおよび関連ドキュメントを参照してください。

junos.get_table機能概要

この junos.get_table 関数は、Junos PyEZ Tables を使用して、Junos OS を実行しているデバイスからデータを取得できます。ここでは、 junos.get_table 実行関数と状態関数の基本的な構文を示します。使用可能な関数パラメーターの完全なリストについては、関数の API ドキュメントを参照してください。

実行関数の salt.modules.junos.get_table 構文は次のとおりです。

状態関数の salt.states.junos.get_table 構文は次のとおりです。

どこ:

  • id- 状態宣言のユーザー定義識別子。

  • path: path—(オプション)テーブル定義とビュー定義を含む YAML ファイルへのパス。

  • table: table- Junos PyEZテーブルの名前。

  • table_file: table_file- テーブル定義とビュー定義を含む YAML ファイルのファイル名。

および table_file パラメーターを使用してpath、テーブル定義を含む YAML ファイルのパスとファイル名を指定します。Junos PyEZ ディストリビューションに含まれるモジュールからjnpr.junos.opテーブルをインポートする場合、 パラメーターをpath省略できます。この場合、get_table関数は指定されたテーブル ファイルの Junos PyEZ インストール パス内の適切なディレクトリを自動的にチェックします。カスタムテーブルへのパスを指定することもできます。カスタムテーブルを使用する場合、テーブルはSaltマスターまたはプロキシミニオンサーバーに配置できます。表 1 に、使用できるさまざまなテーブル、テーブルの場所、およびパラメーターに必要なpath値の概要を示します。

表 1: get_table テーブルタイプ

テーブル

場所

path

jnpr.junos.op モジュール テーブル

プロキシミニオンサーバー上のJunos PyEZインストールパスの下にあるjnpr/junos/opディレクトリ

junos.get_table:
  - table: ArpTable
  - table_file: arp.yml

カスタムテーブル

ソルトマスター

カスタム テーブルを含む YAML ファイルへのパス ( salt:// 表記を使用)。

junos.get_table:
  - table: IFTable
  - table_file: IFTable.yml
  - path: salt://tables 

プロキシミニオンサーバー

カスタム テーブルを含む YAML ファイルへの絶対パス。

junos.get_table:
  - table: IFTable
  - table_file: IFTable.yml
  - path: /srv/salt/tables 

junos.get_table 関数の使用方法

関数を呼び出すjunos.get_tableと、Junos PyEZテーブルを使用して、Junos OSを実行しているデバイスから運用データや設定データを取得できます。次のコマンドは、モジュール内のテーブルを使用してArpTablejnpr.junos.opターゲットデバイスのアドレス解決プロトコル(ARP)エントリを取得します。テーブルは、Junos PyEZ jnpr/junos/op ディレクトリにある arp.yml ファイルで定義されます。

関数の応答には、デバイスのホスト名、テーブルとビュー、および out 操作が成功したかどうかを返す True キーが含まれます。操作が成功した場合、応答には Table 項目を含むキーも含まれます reply 。各テーブル項目には、View で定義されたフィールドと、対応する各フィールドのデータから抽出された値が含まれます。

別の例として、次のステート ファイルは、IFTable という名前のカスタム Junos PyEZ テーブルを使用して、インターフェイスのステータス情報を取得します。テーブルとビューは、ソルトマスターの / srv/salt/tables/IFTable.yml ファイルで定義されます。

方法 : テーブルとビューで省略可能なパラメーターを定義する

Junos PyEZのテーブルとビューには、テーブルの種類に応じて、いくつかのオプションパラメーターを含めることができます。表定義およびビュー定義では、これらのパラメーターのデフォルト値を定義できます。アプリケーションで Table を使用するときに、1 つ以上のパラメーターの値を指定またはオーバーライドすることもできます。

この junos.get_table 関数を使用すると、値を定義したり、これらの同じパラメーターの多くの既定値をオーバーライドしたりできます。たとえば、関数を呼び出す junos.get_table ときに、対応するパラメーターをサポートする Table の引数を含めることができます key 。また、引数を含めて table_args 、パラメーターの args キーと値のペアを指定することもできます。テーブルとビューの異なるタイプでサポートされているパラメータについては、 Junos PyEZ開発者ガイドを参照してください。

EthPortTable RPCを実行するget-interface-informationモジュール内のjnpr.junos.opテーブルを考えてみましょう。RPC はデフォルトの引数media: Trueinterface_name: '[afgxe][et]-*'.

この場合、関数を呼び出すjunos.get_tableときに、RPC を実行し、構造化された出力を返す op テーブルでサポートされているオプションのパラメーターを含めることができます。たとえば、 で定義されている argsRPC 引数の既定値をオーバーライドするパラメーターを含めることができますtable_args

次のコマンドは、デバイスからインターフェイス情報を取得するために使用 EthPortTable し、テーブルで定義されているデフォルトのインターフェイスセットではなく、10ギガビットイーサネット(GbE)インターフェイスのデータのみを返すためのパラメーターが含まれています table_args 。出力に表示されるテーブル定義には、 で args更新された引数が反映されます。

これに相当する状態ファイルは次のとおりです。