分层组织的方式
配置数据通常按三层组织:最下层是角色的默认值,表达组件的通用默认;中间层是主机组变量,表达同一类主机(如 Web 组、数据库组)的差异;最上层是主机变量,只用于确实无法归类的特例。执行时由工具按优先级合并。这样新增主机时只需要在组里加一行,特例才写主机变量,避免把环境差异散落到任务逻辑中。
基本信息
| 数据分层 | 角色默认值、主机组变量、主机变量 |
|---|---|
| 存放位置 | 与任务代码同仓库但独立目录 |
| 敏感值 | 走密钥管理系统,运行时注入 |
| 权威来源 | 每项数据只允许一处定义 |
组织要点
- 命名可读:变量名表达含义与单位,便于排查时理解取值。
- 单位统一:端口、时间、容量等写明单位,避免秒与毫秒混淆。
- 特例最少:主机级变量越少越好,多数差异应能用分组表达。
- 删除及时:主机下线后清理其专属变量,防止误用。
- 注释来源:非显而易见的取值写明依据,便于后续判断能否修改。
- 敏感分离:明文口令、私钥、令牌不进入变量文件。
分层与适用内容
| 层级 | 存放内容 | 修改频率 |
|---|---|---|
| 角色默认值 | 组件通用默认值与可选参数 | 低,随组件做法演进 |
| 主机组变量 | 同类主机的共同差异 | 中,扩容或调参时改动 |
| 主机变量 | 个别主机的特例取值 | 低,应尽量避免 |
| 全局变量 | 跨组共享的基础值 | 低,改动影响面大 |
| 密钥数据 | 口令、私钥、令牌 | 按轮换周期 |
同一份数据在多处定义是维护地狱的起点:修改时不知道该改哪一处,执行结果还取决于优先级规则。发现重复定义应合并到唯一层级,而不是继续加注释说明。
变量文件也要评审:很多事故源于有人悄悄改了生产环境的变量文件,而任务逻辑本身没有任何变化。