事实与状态的关系
事实(facts)是自动化在目标主机上采集到的客观信息,例如操作系统发行版与版本、内核参数、CPU 架构、可用内存、网络地址、挂载点与已安装软件包。状态发现则是把事实与期望状态比对,判断是否需要动作:目标端口是否已监听、服务是否处于运行、配置文件内容是否与模板一致。采集与判断共用一套数据源,采集出错会直接导致判断出错。
基本信息
| 采集内容 | 系统事实、网络与存储信息、已装软件、服务状态 |
|---|---|
| 自定义事实 | 环境归属、业务分组、负责人等人工维护的标识 |
| 外部来源 | 云厂商接口、资产管理系统、配置管理数据库 |
| 采集特征 | 只读、可重复、结果可比对 |
采集与使用要点
- 只读采集:采集动作不得修改目标状态,避免污染被判断的对象。
- 缓存与时效:同一轮执行内复用采集结果,跨轮执行应重新采集。
- 粒度合理:只采集判断所需的字段,采集过多会拖慢执行并放大权限需求。
- 来源唯一:同一字段不要同时来自本机采集与人工维护,冲突时判定规则要事先写清。
- 缺失可识别:采集失败要与「字段为空」区分开,避免把未知当成否。
- 人工标识受控:自定义事实要纳入版本管理,不能在主机上随手修改。
常见事实与用途
| 事实类型 | 典型字段 | 用途 |
|---|---|---|
| 系统 | 发行版、版本、内核、架构 | 决定包管理器与命令差异 |
| 硬件 | CPU 核数、内存、磁盘 | 决定参数调优取值 |
| 网络 | 地址、网关、路由 | 决定监听地址与访问策略 |
| 软件 | 已装包、服务状态、端口 | 判断是否需要安装或重启 |
| 自定义 | 环境、业务分组、负责人 | 决定变量取值与审批路径 |
| 外部 | 云标签、资产编号 | 与资源编排对齐 |
把采集失败当成「不满足条件」会引发危险的重试或重复动作:应先区分采集失败与结果为否,采集失败时中断并要求人工确认,而不是继续往下执行变更。
采集要有明确的权限边界:读取服务状态、包列表等通常需要提权,过度提权会扩大自动化账号的影响面,建议按用途拆分账号或使用受限的提权规则。