Ansible と Junos PyEZ テーブルを使用して Junos OS を実行しているデバイスから運用情報を取得する
モジュールの概要
Junos PyEZ 運用(op)テーブルは、複雑な運用コマンド出力から情報を抽出するシンプルで効率的な方法を提供します。ジュニパーネットワークスは、Ansible プレイブック内の Junos PyEZ op テーブルを活用できる Ansible モジュールを提供しています。 表 1 は、モジュールの概要を示しています。
コンテンツ セット |
モジュール名 |
---|---|
|
|
Juniper.junos
リリース 2.0.0 以降、モジュールはjuniper_junos_table
モジュールの機能をjunos_get_table
置き換えます。
モジュールは、構成のテーブルとビューでは動作しません。
Junos PyEZ テーブルについて
Junos PyEZ は、Junos OS を実行するデバイスの管理と自動化を可能にする Python 向けのマイクロフレームワークです。Junos PyEZ は 、テーブル と ビューと呼ばれるシンプルな YAML 定義を使用して、Junos OS を実行するデバイスから運用コマンドの出力と設定データを取得してフィルター処理します。
Junos PyEZ 運用(op)テーブルは、運用コマンドまたは RPC の出力から情報を抽出します。Junos PyEZ jnpr.junos.op
モジュールには、一般的な RPC の定義済みテーブルおよびビュー定義が含まれています。カスタムテーブルとビューを作成することもできます。
Ansible を使用して Junos OS を実行しているデバイスを管理する場合、 table
モジュールは juniper_junos_table
Junos PyEZ テーブルを使用してデバイスからデータを取得できます。モジュールは、Junos PyEZ ディストリビューションに含まれている定義済みの運用テーブルとビューを参照することも、Ansible 制御ノードに常駐するユーザー定義のテーブルとビューを参照することもできます。
Junos PyEZ テーブルおよびビューの一般的な情報については、 Junos PyEZ 開発者ガイドの以下のセクションおよび関連ドキュメントを参照してください。
Junos PyEZ テーブルでジュニパーネットワークス Ansible モジュールを使用する方法
and juniper_junos_table
モジュールにはtable
、次の引数を含め、使用する Table を指定できます。
file
— Junos PyEZ テーブルとビューを定義する YAML ファイルのファイル名。path
—(オプション)テーブルとビューの定義を持つ YAML ファイルを含むディレクトリへのパス。デフォルトのファイル パスは、 jnpr/junos/ op ディレクトリの Junos PyEZ インストール パスに存在する、定義済みの Junos PyEZ op テーブルの場所です。table
—(オプション)データの取得に使用されるテーブルの名前。このオプションは、ファイルに複数の表定義が含まれている場合、またはファイルに名前に「表」が含まれていない単一の表が含まれている場合にのみ必要です。
たとえば、次のタスクは、playbook ディレクトリにある fpc.yaml ファイルで定義されているカスタム テーブルFPCTable
を使用してデータを取得します。
tasks: - name: Get FPC info juniper.device.table: file: "fpc.yaml" path: "{{ playbook_dir }}" table: "FPCTable"
モジュールの応答には、テーブルによって返される項目のリストを含むキーが含まれています resource
。各リスト項目は、ビューで定義されたフィールド名と、対応する各フィールドのデータから抽出された値を含む辞書です。
Junos PyEZ ディストリビューションの arp.yml ファイルで、 ArpTable
ArpView
次の定義済みの表とビューを考慮します。ArpTable
このオプションを使用<no-resolve/>
して RPC を実行<get-arp-table-information>
します。これは CLI コマンドとshow arp no-resolve
同じです。対応する View は、応答内の各項目<arp-table-entry>
の MAC アドレス、IP アドレス、インターフェイス名を抽出します。
--- ArpTable: rpc: get-arp-table-information args: no-resolve: True item: arp-table-entry key: mac-address view: ArpView ArpView: fields: mac_address: mac-address ip_address: ip-address interface_name: interface-name
次の Ansible プレイブックは、Junos OS を実行するデバイスから ARP(アドレス解決プロトコル)情報を取得するために使用ArpTable
するモジュールを実行table
します。ArpTable
Junos PyEZ ディストリビューションに含まれており、事前定義された Junos PyEZ op テーブルのデフォルト ディレクトリにあるため、path
モジュール引数はファイルの場所を指定する必要はありません。さらに、ファイルで定義され、その名前に「テーブル」が含まれている唯一のテーブルであるためArpTable
、table
引数は、テーブルを指定する必要はありません。
--- - name: Get ARP information hosts: dc1 connection: local gather_facts: no tasks: - name: Get ARP information using Junos PyEZ Table juniper.device.table: file: "arp.yml" register: result - name: Print response debug: var: result
簡潔にするために切り捨てられたプレイブックの出力には、デバイスから返される各項目 <arp-table-entry>
のビューで定義されている対応するフィールドが含まれています。
TASK [Print response] ********************************************************* ok: [dc1a.example.net] => { "result": { "changed": false, "failed": false, "msg": "Successfully retrieved 2 items from ArpTable.", "resource": [ { "interface_name": "em0.0", "ip_address": "10.0.0.5", "mac_address": "02:01:00:00:00:05" }, { "interface_name": "fxp0.0", "ip_address": "198.51.100.10", "mac_address": "30:7c:5e:48:4b:40" }, ] } }
次の Ansible プレイブックでは、事前定義済みの Junos PyEZ 運用テーブルを活用して、 OspfInterfaceTable
Junos OS を実行しているデバイス上の OSPF インターフェイスに関する情報を取得します。 ospf.yml ファイルは複数のテーブルとビューを定義するため、モジュール呼び出しには使用するテーブルを指定する引数が含まれています table
。
--- - name: Get OSPF information hosts: dc1 connection: local gather_facts: no tasks: - name: Get OSPF interface information juniper.device.table: file: "ospf.yml" table: "OspfInterfaceTable" register: result - name: Print response debug: var: result
RPC 引数の指定
Junos PyEZ 動作テーブルには、そのテーブルによって実行される RPC の既定のコマンド オプションと引数を定義するオプション args
のキーがあります。アプリケーションは、ユーザーがデフォルトをオーバーライドしない限り、デフォルト オプションを使用して RPC を実行します。Junos PyEZ アプリケーションでは、既定のコマンド オプションをオーバーライドするか、メソッドを呼び出すときに追加のオプションと引数を RPC に get()
渡すことができます。
table
また、and juniper_junos_table
モジュールを使用すると、テーブルで定義された既定のコマンド オプションをオーバーライドしたり、引数を使用して追加のオプションや引数を RPC にkwargs
渡したりすることもできます。値はkwargs
コマンド オプションと値の辞書で、RPC と RPC が実行されるデバイスでサポートされている必要があります。
たとえば、ethport.yml ファイルの事前定義された Junos PyEZ op Table EthPortTable
は、コマンド オプションを使用media
して RPC を実行<get-interface-information>
し、インターフェイス名の指定された正規表現に一致するすべてのインターフェイスの情報を返します。
EthPortTable: rpc: get-interface-information args: media: True interface_name: '[afgxe][et]-*' args_key: interface_name item: physical-interface view: EthPortView
次の Ansible プレイブックではEthPortTable
、Junos OS を実行しているデバイス上のインターフェイスに関する情報を抽出します。引数にはkwargs
、interface_name: "ge-1/0/0"
のデフォルトinterface_name
をEthPortTable
オーバーライドし、ge-1/0/0 インターフェイスのみの要求されたフィールドを取得するようモジュールに指示します。
--- - name: Get interface information hosts: dc1 connection: local gather_facts: no tasks: - name: Get interface information for Ethernet interfaces juniper.device.table: file: "ethport.yml" kwargs: interface_name: "ge-1/0/0" register: result - name: Print response debug: var: result
Junos PyEZ テーブルのデフォルトおよびユーザー提供のコマンド オプションと引数の詳細については、「Junos PyEZ 運用テーブルの定義」および「Junos PyEZ 運用テーブルとビューの使用」を参照してください。