将 Ansible 与 Junos PyEZ 表配合使用,从 Junos 设备检索操作信息
模块概述
Junos PyEZ 操作 (op) 表提供了一种从复杂操作命令输出中提取信息的简单而有效的方法。瞻博网络提供了 Ansible 模块,使您能够在 Ansible 操作手册中利用 Junos PyEZ 操作表。 表 1 概述了这些模块。
内容集 |
模块名称 |
---|---|
从版本 2.0.0 开始 Juniper.junos
,该 juniper_junos_table
模块将替换模块 junos_get_table
的功能。
这些模块不适用于配置表和视图。
了解 Junos PyEZ 表
Junos PyEZ 是一个适用于 Python 的微框架,可用于管理和自动化 Junos 设备。Junos PyEZ 支持使用简单的 YAML 定义(称为 表 和 视图)从 Junos 设备检索和过滤操作命令输出和配置数据。
Junos PyEZ 操作 (op) 表从操作命令或 RPC 的输出中提取信息。Junos PyEZ jnpr.junos.op
模块包含一些常见 RPC 的预定义表和视图定义。您还可以创建自定义表和视图。
使用 Ansible 管理 Junos 设备时, table
和 juniper_junos_table
模块可以使用 Junos PyEZ 表从设备检索数据。这些模块可以引用 Junos PyEZ 发行版中包含的预定义操作表和视图,也可以引用驻留在 Ansible 控制节点上的用户定义的表和视图。
有关 Junos PyEZ 表和视图的一般信息,请参阅《 Junos PyEZ 开发人员指南》中的以下章节和相关文档:
如何将瞻博网络 Ansible 模块与 Junos PyEZ 表配合使用
table
和juniper_junos_table
模块可以包含以下参数来指定要使用的表:
-
file
- 定义 Junos PyEZ 表和视图的 YAML 文件的文件名。 -
path
—(可选)包含具有表和视图定义的 YAML 文件的目录的路径。默认文件路径是预定义的 Junos PyEZ 操作表的位置,这些表位于 jnpr/junos/op 目录下的 Junos PyEZ 安装路径中。 -
table
—(可选)将用于检索数据的表的名称。仅当文件包含多个表定义或文件包含名称中不包含“Table”的单个表时,才需要此选项。
例如,以下任务使用名为 FPCTable
的自定义表检索数据,该表在 playbook 目录中的 fpc.yaml 文件中定义:
tasks: - name: Get FPC info juniper.device.table: file: "fpc.yaml" path: "{{ playbook_dir }}" table: "FPCTable"
模块的响应包括 resource
键,该键包含表返回的项目列表。每个列表项都是一个字典,其中包含 View 定义的字段名称以及从每个相应字段的数据中提取的值。
请考虑以下预定义的表和视图,ArpTable
以及 ArpView
Junos PyEZ 发行版arp.yml文件中的 ArpTable
。 使用<no-resolve/>
选项执行 <get-arp-table-information>
RPC,该选项等效于 show arp no-resolve
CLI 命令。相应的视图提取响应中每个<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 操作指南将执行该 table
模块,该模块用于 ArpTable
从 Junos 设备检索地址解析协议 (ARP) 信息。由于包含在 Junos PyEZ 发行版中,并且驻留在预定义的 Junos PyEZ 操作表的默认目录中,因此 ArpTable
不需要模块参数来 path
指定文件位置。此外,由于是文件中定义的唯一表,并且其名称中包含“Table”,因此 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 设备上的 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 操作表有一个可选 args
键,用于定义该表执行的 RPC 的默认命令选项和参数。应用程序使用默认选项执行 RPC,除非用户重写默认值。在 Junos PyEZ 应用程序中,可以在调用 get()
方法时覆盖默认命令选项或将其他选项和参数传递给 RPC。
table
和juniper_junos_table
模块还使您能够重写表中定义的默认命令选项,或使用参数将kwargs
其他选项和参数传递给 RPC。该kwargs
值是命令选项和值的字典,RPC 和执行 RPC 的设备必须支持这些选项和值。
例如,ethport.yml文件中预定义的 Junos PyEZ 操作表EthPortTable
使用<get-interface-information>
命令选项执行 RPCmedia
,并返回与接口名称的给定正则表达式匹配的所有接口的信息。
EthPortTable: rpc: get-interface-information args: media: True interface_name: '[afgxe][et]-*' args_key: interface_name item: physical-interface view: EthPortView
以下 Ansible 操作手册用于 EthPortTable
提取有关 Junos 设备上接口的信息。该 kwargs
参数包括 interface_name: "ge-1/0/0"
,它将覆盖 EthPortTable
的 interface_name
默认值,并指示模块仅检索 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 操作表和视图。
更改历史记录表
功能支持由您使用的平台和版本决定。使用 功能资源管理器 确定您的平台是否支持某个功能。
Juniper.junos
,该
juniper_junos_table
模块将替换模块
junos_get_table
的功能。