Ansible 概念
这些概念适用于 Ansible 的所有用法。在开始使用 Ansible 或阅读文档之前,您应当先了解这些概念。
控制节点 (Control node)
运行 Ansible 命令行工具(ansible-playbook, ansible, ansible-vault 等)的机器。任何满足软件要求的计算机都可以用作控制节点 —— 笔记本电脑、共享桌面和服务器都可以运行 Ansible。您也可以在被称为 执行环境 (Execution Environments) 的容器中运行 Ansible。
可以拥有多个控制节点,但 Ansible 本身并不在它们之间进行协调,此类功能请参阅 AAP。
受管节点 (Managed nodes)
也被称为“主机 (hosts)”,即您旨在通过 Ansible 管理的目标设备(服务器、网络设备或任何计算机)。
通常不需要在受管节点上安装 Ansible,除非您使用的是 ansible-pull,但这非常罕见且不是推荐的配置方式。
Inventory
由一个或多个“清单源 (inventory sources)”提供的受管节点列表。您的清单可以指定每个节点特有的信息,例如 IP 地址。它还用于分配组,从而实现 Play 中的节点选择和批量变量赋值。
要详细了解清单,请参阅 使用清单 (Working with Inventory) 章节。有时清单源文件也被称为 “hostfile”。
Playbooks (剧本)
它们包含 Plays(Ansible 执行的基本单位)。这既是一个“执行概念”,也是我们对 ansible-playbook 操作的文件之描述。
Playbooks 使用 YAML 编写,易于阅读、编写、共享和理解。要详细了解 playbooks,请参阅 Ansible playbooks。
Plays (剧本片段)
Ansible 执行的主要上下文,这个 playbook 对象将受管节点(主机)映射到任务。Play 包含变量、角色以及有序的任务列表,并且可以重复运行。它基本上由一个在映射主机和任务上的隐式循环组成,并定义了如何迭代它们。
Roles (角色)
一种有限分布的可重用 Ansible 内容(任务、处理器、变量、插件、模板和文件),用于在 Play 内部使用。
要使用任何角色资源,必须将该角色本身导入到 Play 中。
Tasks (任务)
应用于受管主机的“动作”定义。您可以使用 ansible 或 ansible-console 通过临时命令 (ad hoc command) 执行单个任务一次(两者都会创建一个虚拟 Play)。
Handlers (处理器)
任务的一种特殊形式,仅在被之前的任务通知且该任务结果为“已更改 (changed)”状态时才执行。
Modules (模块)
Ansible 复制到每个受管节点并执行(在需要时)的代码或二进制文件,用以完成每个任务中定义的动作。
每个模块都有特定的用途,从管理特定类型数据库上的用户,到管理特定类型网络设备上的 VLAN 接口。
您可以通过一个任务调用单个模块,或者在 playbook 中调用多个不同的模块。Ansible 模块被分组在集合 (collections) 中。关于 Ansible 包含多少个集合,请参阅 集合索引 (Collection Index)。
插件
扩展 Ansible 核心功能的代码片段。插件可以控制您如何连接到受管节点(连接插件)、操纵数据(过滤器插件),甚至控制控制台中显示的内容(回调插件)。
详情请参阅 使用插件 (Working with plugins)。
Collections (集合)
一种分发 Ansible 内容的格式,可以包含 playbooks、roles、modules 和 plugins。您可以通过 Ansible Galaxy 安装和使用集合。
要详细了解集合,请参阅 使用 Ansible 集合 (Using Ansible collections)。
集合资源可以相互独立且离散地使用。