了解适用于 Junos OS 的 Ansible 集合、角色和模块
总结 瞻博网络提供了可用于管理 Junos 设备的 Ansible 模块。
了解用于管理 Junos 设备的 Ansible 集合、角色和模块
Ansible 是用于基础架构配置管理的 IT 自动化框架。您可以使用 Ansible 模块(离散的代码单元)在托管式节点上执行特定功能。您可以在远程主机上执行单个模块来执行临时任务,也可以通过 playbook 执行模块。
Ansible 和瞻博网络提供了可用于管理 Junos 设备的 Ansible 模块。瞻博网络 Ansible 模块通过托管在 Ansible Galaxy 存储库中的 Ansible 角色和集合进行分组和分发。 表 1 概述了可用于管理 Junos 设备的不同内容集。
内容集 |
描述 |
Ansible 发布 |
---|---|---|
Ansible 基本安装中包含的 Ansible 模块。 在 Ansible 2.10 中,核心模块从基本安装移动到 Ansible 的 |
Ansible 2.1 至 Ansible 2.9 |
|
用于管理 Junos 设备的集合,瞻博网络作为开源项目提供和管理这些集合。 |
Ansible 2.10 及更高版本 |
|
管理瞻博网络提供、维护和支持的 Junos 设备的角色。 此角色将被集合取代 |
Ansible 2.1 及更高版本 |
|
用于管理 Junos 设备的集合,由 Ansible 提供、维护和支持。 |
Ansible 2.10 及更高版本 |
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.junos
角色可以与集合共存 juniper.device
,并将在更高版本中工作,但我们建议您使用该 juniper.device
集合,因为新功能只会添加到集合中。
如何在 Junos 设备上执行模块
要使用托管在 Ansible Galaxy 存储库中的集合和角色,必须先在控制节点上安装 Ansible,然后安装集合或角色。有关安装 juniper.device
集合或 Juniper.junos
角色的详细信息,请参阅 Ansible for Junos OS 服务器要求。
Ansible 模块可以在托管式节点上执行操作。通常,Ansible 控制节点会将模块发送到受管节点,在托管式节点上执行模块,然后将其移除。在此方案中,受管节点必须能够执行模块。由于大多数 Ansible 模块都是用 Python 编写的,因此 Ansible 通常需要在托管式节点上使用 Python。
但是,集合中的瞻博网络模块 juniper.device
和 Juniper.junos
角色不需要托管式节点上的 Python。与常规操作相反,您可以在 Ansible 控制节点上本地执行模块,模块使用 Junos PyEZ 和基于 NETCONF 的 Junos XML API 与托管式节点进行接口。您可以通过此执行方法使用 Ansible 管理任何受支持的 Junos 设备。 图 1 显示了 Ansible 控制节点与托管 Junos 设备之间的通信。
若要使用集合或Juniper.junos
角色中的juniper.device
模块,playbook 或命令必须:
-
指定集合或角色 - 要指定集合或角色,请在播放中包含
collections
orroles
键。或者,可以省collections
略密钥,而是通过其完全限定的集合名称 (FQCN) 引用集合内容,这是推荐的方法。 -
在控制节点上本地执行模块 — 要在本地运行 Ansible 模块,请将参数
local
定义为connection
,例如,connection: local
包含在操作指南中或包含在--connection local
命令行中。注意:使用
connection: local
时,Ansible 会为剧中每个需要连接的任务建立与设备的单独连接。juniper.device
集合模块还支持使用connection: juniper.device.pyez
,它仍在本地执行模块,而是为重头戏中的所有任务与设备建立单个持久连接。 -
提供适当的连接和身份验证信息以连接到受管设备 - 有关更多信息,请参阅:
您可以使用有权访问托管 Junos 设备的任何用户帐户执行 Ansible 模块。执行 Ansible 模块时,将强制执行 Junos OS 用户帐户访问权限,并为 Junos OS 用户帐户配置的类确定权限。因此,如果用户执行将配置更改加载到设备上的模块,则用户必须具有更改配置相关部分的权限。
以下 playbook 执行 juniper.device
集合的 facts
模块以检索设备事实并将其保存到文件中。该示例使用默认位置中的现有 SSH 密钥向设备进行身份验证,因此不会在 playbook 中显式提供凭据。
--- - 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 debug: var: junos.version
同样,以下剧本执行 Juniper.junos
角色的 juniper_junos_facts
模块以执行相同的操作。
--- - name: Get Device Facts hosts: dc1 connection: local gather_facts: no roles: - Juniper.junos tasks: - name: Retrieve facts from a Junos device juniper_junos_facts: savedir: "{{ playbook_dir }}" - name: Print version debug: var: junos.version
您还可以在命令行上执行临时操作。以下命令执行 juniper.device
集合的 facts
模块,并从清单组 dc1 中的主机检索设备事实。
user@host$ 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/en/latest/。
瞻博网络设备模块名称 |
描述 |
---|---|
|
在 Junos 设备上执行 CLI 命令并将输出保存在本地。 |
|
管理 Junos 设备的配置。 |
|
从远程主机检索特定于设备的信息,包括 Junos OS 版本、序列号和硬件型号。 |
|
从 Ansible 执行 Junos Snapshot Administrator in Python (JSNAPy) 测试。 |
|
在 Junos 设备上执行 |
|
在 Junos 设备上执行路径 MTU 发现。 |
|
执行 Junos OS RPC。 |
|
安装 Junos OS 软件包并重新启动 Junos 设备。 |
|
在 Junos 设备上执行系统操作,包括重置、重新启动或关闭设备。 |
|
为支持群集的 SRX 系列防火墙创建 SRX 系列机箱群集。 |
|
使用 Junos PyEZ 操作表和视图从 Junos 设备检索操作信息。 |
瞻博网络 Juniper.junos 角色
瞻博网络提供 Juniper.junos
Ansible 角色,该角色托管在 Ansible Galaxy 网站上,其中包含使您能够管理 Junos 设备的 Ansible 模块。从 Ansible 2.10 开始, juniper.device
该集合将 Juniper.junos
取代该角色。集合中的模块与角色中的模块具有相同的功能和参数,但参数除外 provider
。尽管集合和角色可以在同一平台上共存,并且可以在更高版本中继续使用这些 Juniper.junos
模块,但我们建议您使用该 juniper.device
集合,因为新功能只会添加到集合中。
表 3 总结了该 Juniper.junos
角色中的模块。有关模块的最新列表、文档和使用示例,请参阅 https://junos-ansible-modules.readthedocs.io/en/latest/。
从版本 2.0.0 开始 Juniper.junos
,该 Juniper.junos
角色包括一组增强的模块。每个新模块都会替换一个或多个现有模块的功能。增强的模块支持一组通用的连接和身份验证参数、使您能够指定与核心模块相同的连接和身份验证相关选项的别名,以及指定提供程序字典中的参数的功能。
模块名称 |
描述 |
自版本 2.0.0 起已弃用的模块 |
---|---|---|
|
在 Junos 设备上执行 CLI 命令并将输出保存在本地。 |
|
|
管理 Junos 设备的配置。 |
|
|
从远程主机检索特定于设备的信息,包括 Junos OS 版本、序列号和硬件型号。 |
|
|
从 Ansible 执行 Junos Snapshot Administrator in Python (JSNAPy) 测试。 |
|
|
在 Junos 设备上执行 |
|
|
在 Junos 设备上执行路径 MTU 发现。 |
|
|
执行 Junos OS RPC。 |
|
|
安装 Junos OS 软件包并重新启动 Junos 设备。 |
|
|
在 Junos 设备上执行系统操作,包括重置、重新启动或关闭设备。 |
|
|
为支持群集的 SRX 系列防火墙创建 SRX 系列机箱群集。 |
|
|
使用 Junos PyEZ 操作表和视图从 Junos 设备检索操作信息。 |
|
Juniper.junos
,该
Juniper.junos
角色包括一组增强的模块。