AnsibleをJunos PyEZテーブルと共に使用して、Junosデバイスから運用情報を取得

AnsibleプレイブックでJunos PyEZテーブルとビューを使用して、Junosデバイスから運用情報を取得します。

モジュールの概要

Junos PyEZの運用(op)テーブルは、複雑な運用コマンドの出力から情報を抽出するシンプルで効率的な方法を提供します。ジュニパーネットワークスは、Ansibleプレイブック内からJunos PyEZ演算テーブルを活用できるAnsibleモジュールを提供しています。 表1は 、このモジュールの概要を示しています。

表1:Junos PyEZテーブルモジュール

コレクション

モジュールセット

モジュール名

juniper.device

juniper.device

juniper.device.table

注:

tableモジュールは、設定テーブルとビューの使用をサポートしていません。

Junos PyEZテーブルについて

Junos PyEZ は、Junosデバイスの管理と自動化を可能にするPython用のマイクロフレームワークで、Junosデバイス。Junos PyEZは、 テーブル や ビューと呼ばれるシンプルなYAML定義を使用して、Junosデバイスから操作コマンドの出力と設定データを取得およびフィルタリングすることをサポートしています。

Junos PyEZ運用(op)テーブルは、運用コマンドまたはRPCの出力から情報を抽出します。Junos PyEZ jnpr.junos.op モジュールには、いくつかの一般的な RPC 用に事前定義されたテーブルとビューの定義が含まれています。カスタムのテーブルとビューを作成することもできます。

Ansibleを使用してJunosデバイスを管理する場合、 table モジュールはJunos PyEZテーブルを使用してデバイスからデータを取得できます。このモジュールは、Junos PyEZディストリビューションに含まれる定義済みの運用テーブルとビューを参照できます。このモジュールは、Ansible制御ノード上にあるユーザー定義のテーブルとビューを参照することもできます。

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

ジュニパーネットワークスのAnsibleモジュールとJunos PyEZテーブルを使用する方法

juniper.device.tableモジュールには、使用するJunos PyEZテーブルを指定するための以下の引数を含めることができます。

  • file—Junos PyEZテーブルとビューを定義するYAMLファイルのファイル名。

  • path—(オプション)テーブルとビューの定義を含むYAMLファイルを含むディレクトリへのパス。デフォルトのファイルパスは、定義済みのJunos PyEZ opテーブルの場所であり、 jnpr/junos/op ディレクトリの下のJunos PyEZインストールパスにあります。

  • table—(オプション)テーブルの名前。このオプションは、ファイルに複数の表定義が含まれている場合、または名前に「表」を使用しない単一の表定義がファイルに含まれている場合にのみ、指定する必要があります。

たとえば、次のタスクでは、playbook ディレクトリにある fpc.yaml ファイルで定義されている FPCTable という名前のカスタムテーブルを使用してデータを取得します。

juniper.device.table モジュール の応答には、テーブルによって返される項目の一覧を含む resource キーが含まれています。各リスト項目は、ビューで定義されたフィールド名と、対応する各フィールドのデータから抽出された値を含む辞書です。

Junos PyEZディストリビューションのarp.ymlファイルにある、次の定義済みのテーブルとビュー(ArpTableとArpView)を考えてみましょう。 ArpTable は、show arp no-resolve CLI コマンドに相当する <no-resolve/> オプションを付けて <get-arp-table-information> RPC を実行します。対応するビューは、応答内の各<arp-table-entry>項目のMACアドレス、IPアドレス、インターフェイス名を抽出します。

以下のAnsibleプレイブックは、ArpTableを使用してJunosデバイスからアドレス解決プロトコル(ARP)情報を取得するjuniper.device.tableモジュールを実行します。Junos PyEZディストリビューションでは、デフォルトディレクトリに定義済みのopテーブルとしてArpTableが含まれています。したがって、モジュール引数にファイルの場所を指定するpathを含める必要はありません。また、table引数は、名前に「Table」が含まれArpTable、ファイル内で定義されている唯一のTableであるため、必須ではありません。

プレイブック出力は簡潔に切り捨てられていますが、デバイスから返される各 <arp-table-entry> 項目に対して、ArpView によって定義された対応するフィールドが含まれています。

以下のAnsibleプレイブックでは、定義済みのJunos PyEZ運用テーブル OspfInterfaceTableを利用して、Junosデバイス上のOSPFインターフェイスに関する情報を取得します。 ospf.yml ファイルは複数のテーブルとビューを定義するため、モジュール 呼び出しには、使用するテーブルを指定する table 引数が含まれます。

RPC 引数の指定

Junos PyEZ 操作テーブルには、そのテーブルによって実行される RPC のデフォルトのコマンド オプションと引数を定義するオプションの args キーがあります。アプリケーションは、ユーザーがデフォルトを上書きしない限り、デフォルトオプションでRPCを実行します。Junos PyEZ アプリケーションでは、 get() メソッドを呼び出すときに、デフォルトのオプションをオーバーライドしたり、追加のオプションや引数を RPC に渡したりできます。

juniper.device.table モジュールでは、テーブルで定義されている既定のオプションをオーバーライドしたり、kwargs 引数を使用して追加のオプションや引数を RPC に渡したりすることもできます。kwargs値は、コマンドオプションと値の辞書です。提供される引数は、RPC と RPC を実行するデバイスでサポートされている必要があります。

例えば、ethport.ymlファイル内の定義済みJunos PyEZ op Table EthPortTableは、media コマンド オプションを使用して <get-interface-information> RPC を実行します。デフォルトでは、RPCは、インターフェイス名の指定された正規表現に一致するすべてのインターフェイスの情報を返します。

次のAnsibleプレイブックでは、EthPortTableを使用して管理対象デバイス上のインターフェイスに関する情報を抽出します。kwargs引数にはinterface_name: "ge-1/0/0"が含まれます。この引数は、interface_nameのEthPortTableデフォルトを上書きし、ge-1/0/0インターフェイスに対してのみ要求されたフィールドを取得するようにモジュールに指示します。

Junos PyEZテーブルのデフォルトおよびユーザー提供のコマンドオプションと引数の詳細については、次を参照してください。