第 12 章 自动化工具 自动化工具
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
如果不对自动化工具(如 Red Hat Ansible、Nornir 和 HashiCorp Terraform)在网络自动化中的作用进行评估,那么对网络自动化的讨论将是不完整的。
传统上,这种工具更侧重于服务器自动化用例。这是可以理解的,因为其中一些工具起源于服务器操作系统自动化以及操作系统和/或应用程序配置管理。不过近年来,多家公司花费了大量精力来增强其产品的 Network+ 自动化功能。这些增强功能使这些产品在网络自动化方面更加实用和强大。
自动配置管理是最初的主要用例。但随着主要由公有云提供商提供的动态基础设施服务的出现,工具也在不断发展,新的参与者也进入了游戏场,以实现 IaC 范式。
本章将介绍如何在网络自动化中使用一些流行的开源自动化工具:
-
Ansible
-
诺尼尔
-
Terraform
在了解使用这些工具实现网络自动化的细节和示例之前,我们先来快速了解一下这些工具的概况。
审查自动化工具
虽然所有这些工具都以自动化为重点,但每个工具都有自己的架构,并以略微不同的方式实现自动化。因此,每个工具都有自己的优缺点。在本节中,我们将快速回顾每种工具,以便您开始了解如何在您的环境中使用它们。
从高层次来看,这些工具在架构/概念上的一些主要区别如下:
- 配置管理与基础设施配置
-
基础设施配置是用于创建基础设施--网络服务、虚拟机、数据库等的过程。配置管理是自动安装软件组件和执行配置管理任务的过程。因此,可以将基础架构调配理解为第 0 天的活动,而将配置管理理解为第 1 天的活动。尽管大多数自动化工具都能实现这两种功能,但本章将帮助你了解每种工具的优势所在。
- 基于代理与无代理
-
有些工具需要在被管理的系统或设备上运行代理(一种软件)。在网络自动化使用案例中,这可能会成为一个问题,因为并不是每个 NOS 都支持在网络设备上运行代理。如果网络操作系统不支持在设备上本地运行代理,有时会有涉及代理的变通方法。无代理工具显然不需要代理,可能更适用于网络自动化用例。
- 集中与分散
-
基于代理的架构通常也需要一个集中式主服务器。一些无代理产品也使用主服务器,但大多数是分散式的。
- 定制协议与基于标准的协议
-
有些工具使用自定义协议;这通常与基于代理的架构有关。其他工具则利用 SSH。鉴于 SSH 在网络设备中无处不在,利用 SSH 作为传输协议的工具可能更适合网络自动化用例。
- DSL 与基于标准的数据格式和通用语言的比较
-
有些工具有自己的特定领域语言 (DSL);这些工具的用户必须用 DSL 创建相应的文件,才能被自动化工具使用。 DSL 是一种为特定领域(或工具)专门设计的语言。 对于还不熟悉 DSL 的企业来说,这可能会带来额外的学习曲线。其他工具利用 YAML,在这种情况下,YAML 被认为是一种通用语言。 请记住,我们在第 8 章中讨论过 YAML。
- 陈述式与命令式
-
有些工具使用声明式方法来定义基础架构的最终状态:与定义顺序无关,将推断并执行适当的依赖关系和任务,以实现目标状态。其他工具则使用命令式方法:每个步骤都是一个要执行的程序,定义顺序决定了执行顺序。
- 可扩展性
-
这些自动化工具大多允许您通过高级脚本语言(如 Python 或 Go)添加或扩展功能。
- 推与拉、事件驱动
-
一些自动化工具以推送模式运行:信息从一个地方推送到所管理的设备或系统。其他自动化工具则以拉动模式运行,通常是拉动配置信息或指令(通常是按某种计划进行)。最后,事件驱动型工具会根据另一个事件或触发器执行操作。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access