网络自动化有何不同
网络自动化使用基本 Ansible 概念,但网络模块的工作方式存在重要差异。本介绍将帮助您了解本指南中的练习。
在控制节点上执行
与大多数 Ansible 模块不同,网络模块不会在受管节点上运行。从用户的角度来看,网络模块的工作方式与其他模块一样。它们与临时命令、剧本和角色一起工作。然而,在幕后,网络模块使用与其他(Linux/Unix 和 Windows)模块不同的方法。Ansible 使用 Python 编写和执行。由于大多数网络设备无法运行 Python,因此 Ansible 网络模块在 Ansible 控制节点上执行,ansible
或 ansible-playbook
在该节点上运行。
网络模块还使用控制节点作为备份文件的目标,对于那些提供 backup
选项的模块而言。对于 Linux/Unix 模块,在受管节点上已经存在配置文件的情况下,备份文件默认写入与新更改后的文件相同的目录。网络模块不会更新受管节点上的配置文件,因为网络配置不会写入文件。网络模块在控制节点上写入备份文件,通常在剧本根目录下的 backup 目录中。
当使用连接插件(例如 ansible.netcommon.network_cli
)用于网络模块时,Unix/Linux 模块(如 ansible.builtin.file
和 ansible.builtin.copy
)也会在控制节点上运行。
多种通信协议
由于网络模块在控制节点而不是在受管节点上执行,因此它们可以支持多种通信协议。为每个网络模块选择的通信协议(SSH 上的 XML、SSH 上的 CLI、HTTPS 上的 API)取决于平台和模块的用途。一些网络模块只支持一种协议;有些提供了选择。最常见的协议是 SSH 上的 CLI。使用 ansible_connection
变量设置通信协议。
ansible_connection 的值 |
协议 |
要求 |
持久性? |
---|---|---|---|
ansible.netcommon.network_cli |
SSH 上的 CLI |
network_os 设置 |
是 |
ansible.netcommon.netconf |
SSH 上的 XML |
network_os 设置 |
是 |
ansible.netcommon.httpapi |
HTTP/HTTPS 上的 API |
network_os 设置 |
是 |
本地 |
取决于提供商 |
提供商设置 |
否 |
注意
ansible.netcommon.httpapi
弃用了 eos_eapi
和 nxos_nxapi
。有关详细信息和示例,请参阅 Httpapi 插件。
ansible_connection: local
已被弃用。请改用上面列出的持久连接类型之一。使用持久连接,您只需定义一次主机和凭据,而无需在每个任务中都定义。您还需要为要与其通信的特定网络平台设置 network_os
变量。有关在各种平台上使用每种连接类型的更多详细信息,请参阅 特定于平台的 页面。
按网络平台组织的集合
网络平台是一组具有共同操作系统的网络设备,这些设备可以由 Ansible 集合进行管理,例如
Arista:arista.eos
VyOS vyos.vyos
一个网络平台中的所有模块都共享某些要求。一些网络平台具有特定的差异 - 有关详细信息,请参阅 特定于平台的 文档。