模块的分类与选用顺序
Ansible 的能力由模块提供,按用途可分为几类:包管理负责安装与升级,文件与模板负责下发内容,服务管理负责启停与开机自启,用户与权限负责账号、组与授权,系统信息采集负责获取事实,命令执行用于没有专用模块的场景,网络与云资源类模块负责设备与云平台对象,编排类模块负责流程控制与结果处理。选用顺序是先用专用状态型模块,没有可用模块时才用命令执行模块并补齐判断条件。
基本信息
| 包管理 | 安装、卸载、升级软件包 |
|---|---|
| 文件与模板 | 下发静态文件或按变量渲染 |
| 服务管理 | 启停、重载、开机自启 |
| 用户与权限 | 账号、组、授权与密钥 |
| 命令执行 | 无专用模块时的兜底手段 |
| 系统信息 | 采集事实并用于条件判断 |
| 网络与云 | 设备与云平台资源操作 |
| 编排控制 | 条件、循环、断言与结果处理 |
选用要点
- 优先状态型模块:装包、管服务、写文件都有专用模块,自带幂等与差异报告。
- 命令模块做兜底:没有专用模块时使用,并显式写出存在性判断或变更条件。
- 按集合归类:内置模块与外部集合分开,明确来源与版本,便于升级。
- 系统信息先采集:用事实判断平台差异,而不是在任务里堆叠条件。
- 流程控制单独一层:断言、循环与条件处理不属于变更动作,宜与变更任务分开。
- 记录模块来源:在使用说明中注明模块所属集合,避免版本升级后行为变化导致意外。
分类与典型用途
| 类别 | 典型用途 | 注意事项 |
|---|---|---|
| 包管理 | 安装指定版本软件 | 区分发行版包名差异 |
| 文件与模板 | 下发配置与静态资源 | 模板含变量时注意渲染结果 |
| 服务管理 | 启停与重载服务 | 重载失败需检查配置语法 |
| 用户与权限 | 建账号、配密钥与提权 | 注意权限最小化 |
| 命令执行 | 无模块可用的场景 | 需自行补幂等判断 |
| 系统信息 | 采集事实用于分支 | 区分采集失败与取值为空 |
| 网络与云 | 设备与平台资源操作 | 关注接口限流与配额 |
| 编排控制 | 断言、等待与失败处理 | 与变更动作分开组织 |
同一件事在外部集合里可能有功能更强的实现,但引入前要确认维护状态与版本策略:外部集合的行为可能随版本变化,需要在使用说明里固定版本并安排升级验证。
命令执行模块不是禁区,但要把判断条件补齐并说明原因。评审时看到命令模块,应能回答「为什么没有用专用模块」这个问题。