了解适用于 Junos OS 的 Ansible 集合和模块
总结 瞻博网络提供了可用于管理 Junos 设备的 Ansible 模块。
了解用于管理 Junos 设备的 Ansible 集合和模块
Ansible 是用于基础架构配置管理的 IT 自动化框架。您可以使用 Ansible 模块(离散的代码单元)在托管节点上执行特定功能。您可以在远程主机上执行单个模块来执行临时任务,也可以通过操作指南执行模块。
Ansible 和瞻博网络提供了可用于管理 Junos 设备的 Ansible 模块。瞻博网络 Ansible 模块通过托管在 Ansible Galaxy 存储库中的 Ansible 集合进行分组和分发。 表 1 概述了可用于管理 Junos 设备的不同内容集。
内容集 |
描述 |
Ansible 版本 |
---|---|---|
用于管理 Junos 设备的集合,瞻博网络将其作为开源项目提供和管理。 |
Ansible 2.10 及更高版本 |
|
用于管理 Junos 设备的集合,由 Ansible 提供、维护和支持。 |
Ansible 2.10 及更高版本 |
|
Ansible 核心模块 |
Ansible 基本安装中包含的 Ansible 模块。 在 Ansible 2.10 中,核心模块从基础安装移到了 Ansible 的 |
Ansible 2.1 到 Ansible 2.9 |
|
负责管理瞻博网络提供、维护和支持的 Junos 设备。 此角色由 |
Ansible 2.1 及更高版本 |
Ansible 角色是一组用于配置主机的任务和支持变量、文件、模板和模块。从 Ansible 2.10 开始,Ansible 支持 Ansible 内容集,这是一种用于分发 Ansible 内容的格式,但未包含在 Ansible 基础安装中。Ansible 集合可以包含更广泛的内容,包括模块、操作指南、插件和角色。Ansible 集合也有自己的存储库,可以独立于 Ansible 基础安装进行开发和发布。
在 Ansible 2.9 及更低版本中,您可以使用瞻博网络 Juniper.junos
角色中提供的模块或作为 Ansible 基本安装的一部分提供的核心模块来管理 Junos 设备。从 Ansible 2.10 开始, Juniper.junos
角色和 Ansible 核心模块将被相应的集合取代。随着瞻博网络 juniper.device
集合的引入,角色 Juniper.junos
中的模块在集合中以新名称复制,因此保留了与原始模块相同的功能和参数,但 provider
参数除外。我们建议你使用集合 juniper.device
,因为新功能只会添加到集合中。
如何在 Junos 设备上执行模块
要使用 Ansible Galaxy 存储库中托管的集合,必须先在控制节点上安装 Ansible,然后再安装集合。有关安装 juniper.device
集合的详细信息,请参阅 适用于 Junos OS 服务器的 Ansible 要求。
Ansible 模块可以在托管节点上执行操作。通常,Ansible 控制节点会将模块发送到托管节点,在那里执行,然后删除。在此方案中,受管节点必须具有执行模块的能力。由于大多数 Ansible 模块都是用 Python 编写的,因此 Ansible 通常需要在托管节点上运行 Python。
但是, juniper.device
集合中的瞻博网络模块不需要在托管节点上使用 Python。与常规操作不同的是,您在 Ansible 控制节点上本地执行模块,这些模块使用 Junos PyEZ 和基于 NETCONF 的 Junos XML API 与托管节点连接。您可以通过此执行方法管理任何受支持的 Junos 设备。 图 1 展示了 Ansible 控制节点与受管 Junos 设备之间的通信。

若要使用 juniper.device
收集模块,playbook 或命令必须:
-
指定集合或 FQCN - 要指定集合,请在播放中包含
collections
密钥。或者,可以省略collections
密钥,改为通过其完全限定的集合名称 (FQCN) 引用集合内容,这是推荐的方法。 -
在控制节点上本地执行模块 - 要在本地运行 Ansible 模块,请将参数
local
定义为connection
,例如,通过包含在connection: local
操作指南中或包含在命令行中。--connection local
注意:使用
connection: local
时,Ansible 会为剧中需要连接的每个任务建立与设备的单独连接。juniper.device
收集模块还支持 usingconnection: juniper.device.pyez
,它仍然在本地执行模块,而是为播放中的所有任务建立与设备的单个持久连接。 -
提供适当的连接和身份验证信息以连接到受管设备 - 有关更多信息,请参阅:
您可以使用有权访问受管理 Junos 设备的任何用户帐户来执行 Ansible 模块。执行 Ansible 模块时,将强制实施 Junos OS 用户帐户访问权限,并且为 Junos OS 用户帐户配置的类将确定权限。因此,如果用户执行将配置更改加载到设备上的模块,则该用户必须有权更改配置的相关部分。
以下 playbook 执行 juniper.device
集合的 facts
模块以检索设备事实并将其保存到文件中。该示例使用默认位置中的现有 SSH 密钥向设备进行身份验证,因此不会在操作指南中显式提供凭据。
--- - name: Get Device Facts hosts: dc1 connection: local gather_facts: no tasks: - name: Retrieve facts from a Junos device juniper.device.facts: savedir: "{{ playbook_dir }}" - name: Print version ansible.builtin.debug: var: junos.version
您还可以在命令行上执行临时操作。以下命令执行 juniper.device
集合的 facts
模块,并从清单组 dc1 中的主机检索设备事实。
user@ansible-cn:~$ ansible --connection local -i production dc1 -m juniper.device.facts
瞻博网络 juniper.device 集合
瞻博网络提供 juniper.device
Ansible 内容集,托管在 Ansible Galaxy 网站上。该集合包括用于管理 Junos 设备的 Ansible 模块。
表 2 概述了集合中的 juniper.device
模块。在集合的初始版本中,集合模块保留与角色中 Juniper.junos
相应模块相同的功能和参数,但 provider
集合模块不支持该参数。
有关模块的最新列表、文档和使用示例,请参阅 https://ansible-juniper-collection.readthedocs.io/。
juniper.device 模块名称 |
描述 |
---|---|
|
在 Junos 设备上执行 CLI 命令,并将输出保存在本地。 |
|
管理 Junos 设备的配置。 |
|
从远程主机检索特定于设备的信息,包括 Junos OS 版本、序列号和硬件型号。 |
|
通过 Ansible 在 Python (JSNAPy) 测试中执行 Junos Snapshot Administrator。 |
|
在本地 Ansible 控制节点和 Junos 设备之间传输文件。 |
|
在 Junos 设备上执行 |
|
在 Junos 设备上执行路径 MTU 发现。 |
|
执行 Junos OS RPC。 |
|
安装 Junos OS 软件包并重新启动 Junos 设备。 |
|
在 Junos 设备上执行系统操作,包括重置、重新启动或关闭设备。 |
|
为支持群集的 SRX 系列防火墙创建 SRX 系列机箱群集。 |
|
使用 Junos PyEZ 操作表和视图从 Junos 设备检索操作信息。 |