基础概念
这些概念适用于 Ansible 的所有用途,包括网络自动化。您需要了解它们才能将 Ansible 用于网络自动化。此基本介绍提供了遵循本指南中示例所需的基础知识。
- 控制节点
- 被管理节点
- 清单
- 剧本
- 剧集
- 角色
- 任务
- 处理程序
- 剧集
- 模块
- 插件
- 集合
控制节点
运行 Ansible CLI 工具(ansible-playbook、ansible、ansible-vault 等)的机器。您可以使用任何满足软件要求的计算机作为控制节点——笔记本电脑、共享桌面和服务器都可以运行 Ansible。您也可以在称为执行环境的容器中运行 Ansible。
多个控制节点是可能的,但 Ansible 本身不协调它们之间的运行,有关此类功能,请参见AAP。
被管理节点
也称为“主机”,这些是您旨在用 Ansible 管理的目标设备(服务器、网络设备或任何计算机)。
通常情况下,Ansible 不会安装在被管理节点上,除非您使用的是ansible-pull,但这很少见,也不是推荐的设置。
清单
由一个或多个“清单源”提供的被管理节点列表。您的清单可以指定每个节点的特定信息,例如 IP 地址。它还用于分配组,这些组既允许在剧集中选择节点,也允许批量分配变量。
要了解有关清单的更多信息,请参见使用清单部分。有时,清单源文件也称为“主机文件”。
剧本
它们包含剧集(这是 Ansible 执行的基本单元)。这既是一个“执行概念”,也是我们用来描述 ansible-playbook 操作的文件的方式。
剧本是用 YAML 编写的,易于阅读、编写、共享和理解。要了解有关剧本的更多信息,请参见Ansible 剧本。
剧集
Ansible 执行的主要上下文,此剧本对象将被管理节点(主机)映射到任务。剧集包含变量、角色和任务的有序列表,并且可以重复运行。它基本上由对映射的主机和任务的隐式循环组成,并定义如何迭代它们。
角色
在剧集内部使用的可重用 Ansible 内容(任务、处理程序、变量、插件、模板和文件)的有限分发。
要使用任何角色资源,必须将角色本身导入到剧集中。
任务
要应用于被管理主机的“操作”的定义。您可以使用 ansible 或 ansible-console(两者都会创建一个虚拟剧集)一次执行单个任务。
处理程序
任务的一种特殊形式,仅在之前导致“已更改”状态的任务发出通知时才执行。
模块
Ansible 复制到并执行到每个被管理节点上的代码或二进制文件(如果需要)以完成每个任务中定义的操作。
每个模块都有特定的用途,从管理特定类型数据库上的用户到管理特定类型网络设备上的 VLAN 接口。
您可以使用任务调用单个模块,也可以在剧本中调用多个不同的模块。Ansible 模块分组在集合中。要了解 Ansible 包含多少集合,请参见集合索引。
插件
扩展 Ansible 核心功能的代码片段。插件可以控制您如何连接到被管理节点(连接插件)、操作数据(过滤器插件),甚至控制在控制台中显示的内容(回调插件)。
有关详细信息,请参见使用插件。
集合
Ansible 内容分发的格式,可以包含剧本、角色、模块和插件。您可以通过Ansible Galaxy安装和使用集合。
要了解有关集合的更多信息,请参见使用 Ansible 集合。
集合资源可以彼此独立且离散地使用。
基础知识之外
此页面介绍了一些概念,这些概念可以帮助你使用目录结构和源代码控制来管理你的 Ansible 工作流程。与本指南开头的基本概念一样,这些中级概念对于所有 Ansible 用法都是通用的。
- 典型的 Ansible 文件目录结构
- 跟踪清单和剧本的更改:使用 git 进行源代码管理
典型的 Ansible 文件目录结构
Ansible 期望在特定位置找到特定文件。随着你的清单扩展以及创建和运行更多网络剧本,请像这样在你的 Ansible 项目工作目录中组织你的文件:
. |
当使用 backup: true 参数运行诸如 vyos_config 之类的模块时,将创建 backup 目录及其中的文件。
跟踪清单和剧本的更改:使用 git 进行源代码管理
随着你的清单、角色和剧本的扩展,你应该将你的 Ansible 项目置于源代码管理之下。我们推荐使用 git 进行源代码管理。git 提供了审计跟踪,允许你跟踪更改、回滚错误、查看历史记录以及共享管理、维护和扩展 Ansible 生态系统的负载。有很多关于使用 git 的教程和指南可用。