三个概念各管一段
清单是主机与主机组的集合,决定一次执行的作用范围;剧本是一次执行编排,描述在哪些主机上进行若干步骤,步骤之间可以有顺序、条件与失败处理;角色是把一组任务、模板、变量与处理器打包成的可复用单元,用来表达「安装并配置某组件」这类标准做法。三者是范围、流程与做法的关系,混在一起就会出现难以复用的资产。
基本信息
| 清单 | 主机、主机组及组变量的来源 |
|---|---|
| 剧本 | 一次执行的编排单位,含目标主机与任务序列 |
| 角色 | 可复用的任务、模板、变量与处理器打包 |
| 组合关系 | 剧本引用角色,角色作用在清单选中的主机上 |
边界划分建议
- 清单只描述主机与环境归属,不放业务逻辑与安装步骤。
- 剧本只做编排:选主机、调角色、安排顺序与条件,尽量不下沉细节命令。
- 角色只做通用做法:可参数化但不应写死某个环境的地址与账号。
- 环境差异放进组变量与角色默认变量,靠变量覆盖而不是复制剧本。
- 一次性操作单独成剧本并注明适用范围,不要混进长期维护的角色。
三者如何组合
三者如何组合
# 清单:范围(inventory/hosts.ini)
# [web]
# web01.example.com
# [db]
# db01.example.com
# 剧本:流程(site.yml)
- hosts: web # 选主机组,来自清单
roles:
- nginx # 用角色,不在这里写安装细节
- hosts: db # 第二段流程,独立作用范围
roles:
- mysql概念对照与常见误用
| 概念 | 回答的问题 | 常见误用 |
|---|---|---|
| 清单 | 对哪些主机操作 | 把安装步骤写进组变量 |
| 剧本 | 按什么顺序做什么 | 剧本里直接写死 IP 与口令 |
| 角色 | 标准做法是什么 | 角色里绑定某个环境的具体值 |
| 变量 | 差异从哪里来 | 同一条值在多处重复定义 |
| 处理器 | 变更后触发什么 | 把关键动作只放在处理器里,干跑时看不到 |
判断拆得对不对,可以用一个简单检验:换一台新主机、换一个环境,需要改动的文件是不是只有清单与变量文件。如果需要改剧本或角色,说明抽象层级放错了位置。