Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

使用 Ansible 从 Junos 设备检索事实

瞻博网络支持使用 Ansible 管理 Junos 设备,并提供了使您能够在设备上执行操作和配置任务的 Ansible 模块。这些模块不需要在受管设备上使用 Python,因为它们使用 Junos PyEZ 和基于 NETCONF 的 Junos XML API 与设备交互。因此,使用 Ansible 在 Junos 设备上执行操作时,必须在控制节点上本地执行 Ansible 模块。因此,Ansible 默认从 Ansible 控制节点而不是托管式节点收集事实。

瞻博网络提供的模块使您能够从 Junos 设备收集设备事实,包括活动配置。 表 1 概述了可用的模块。这些模块使用 Junos PyEZ 事实收集系统来检索设备事实。有关 Junos PyEZ 事实收集系统和返回的字典密钥的完整列表的详细信息,请参阅 jnpr.junos.facts

表 1:用于收集事实的模块

内容集

模块名称

juniper.device 收集

facts

Juniper.junos 角色

juniper_junos_facts

factsjuniper_junos_facts模块返回字典中的ansible_facts.junos设备事实。这些模块还允许您将返回的数据保存在本地 Ansible 控制节点上的文件中。若要指定保存检索到的信息的目录,请包含savedir模块参数,并定义目标目录的路径。包含savedir参数时,playbook 会为每个设备生成以下文件,其中hostname是从设备检索到的事实的值hostname,可能与传递给模块的主机名不同:

  • hostname-facts.json - JSON 格式的设备事实

  • hostname-inventory.xml - XML 格式的设备硬件清单

例如,以下 playbook 检索清单组中每个设备的设备事实,并将每个设备的数据保存在 Ansible 控制节点上 playbook 目录中的单独文件中。由于该手册在本地运行瞻博网络模块,因此 Ansible 默认从控制节点收集事实。该手册包含防止 gather_facts: no Ansible 从控制节点收集事实的参数,而是使用 facts 集合中的 juniper.device 模块从托管设备检索事实。若要向设备进行身份验证,该示例使用默认位置中的现有 SSH 密钥,因此不会在 playbook 中显式提供模块的 facts 凭据。

默认情况下,factsjuniper_junos_facts模块不返回设备配置。要返回设备的活动配置,除了设备事实之外,还包括该config_format选项,并指定返回配置的格式。可接受的格式值为 'json''set''text''xml'。设备上运行的 Junos OS 版本必须支持请求的格式。

包含该config_format选项时,模块响应config中的字典会将ansible_facts.junos具有指定格式的配置的键包含在单个多行字符串中。如果包含该savedir选项,则配置数据不会写入文件。

提示:

要使用 Ansible 从 Junos 设备检索配置数据并将数据保存到文件中, config 请使用 or juniper_junos_config 模块而不是 facts or juniper_junos_facts 模块。有关更多信息,请参阅 使用 Ansible 检索或比较 Junos OS 配置

下一个示例中的 playbook 执行以下操作:

  • 检索清单组中每个设备的设备事实和活动配置

  • 将每台设备的事实和硬件库存保存在 Ansible 控制节点上剧本目录中的单独文件中

  • 将每个设备的配置打印到标准输出