首页/系统与基础设施/自动化运维速查/自动化中的事实采集与状态发现
自动化基础与选型50 条

自动化中的事实采集与状态发现

事实采集是自动化执行前读取目标现状的过程,包括系统事实(发行版、架构、内存、网络)、自定义事实(业务标识、环境归属)与外部查询结果;状态发现则是在此基础上判断目标是否已处于期望状态。采集必须只读、可靠、可缓存,否则会导致判断错误,让幂等任务做出多余改动或漏掉必要改动。

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌​​​​‌​‌‌‌​‌​‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌​‌‌​‌​‌‌​​​​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌‌‌​‌‌​​‌‌​​‌‌​​​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌‌​​‌‌​​‌​‌‌​‌​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​​​‌‌​‌‌​​​‌‌​​‌​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌​‌​‌‌‌​​‌‌​‌‌‌​‌​​​‌‌​​​​‌​‌‌‌​‌​​​‌‌​​‌​‌​​‌​‌‌​‌​‌‌​​‌​​​‌‌​‌​​‌​‌‌‌​​‌‌​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌‌​‌‌​​‌‌​​‌​‌​‌‌‌​​‌​​‌‌‌‌​​‌​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​

事实与状态的关系

事实(facts)是自动化在目标主机上采集到的客观信息,例如操作系统发行版与版本、内核参数、CPU 架构、可用内存、网络地址、挂载点与已安装软件包。状态发现则是把事实与期望状态比对,判断是否需要动作:目标端口是否已监听、服务是否处于运行、配置文件内容是否与模板一致。采集与判断共用一套数据源,采集出错会直接导致判断出错。

基本信息

采集内容系统事实、网络与存储信息、已装软件、服务状态
自定义事实环境归属、业务分组、负责人等人工维护的标识
外部来源云厂商接口、资产管理系统、配置管理数据库
采集特征只读、可重复、结果可比对

采集与使用要点

  • 只读采集:采集动作不得修改目标状态,避免污染被判断的对象。
  • 缓存与时效:同一轮执行内复用采集结果,跨轮执行应重新采集。
  • 粒度合理:只采集判断所需的字段,采集过多会拖慢执行并放大权限需求。
  • 来源唯一:同一字段不要同时来自本机采集与人工维护,冲突时判定规则要事先写清。
  • 缺失可识别:采集失败要与「字段为空」区分开,避免把未知当成否。
  • 人工标识受控:自定义事实要纳入版本管理,不能在主机上随手修改。

常见事实与用途

事实类型典型字段用途
系统发行版、版本、内核、架构决定包管理器与命令差异
硬件CPU 核数、内存、磁盘决定参数调优取值
网络地址、网关、路由决定监听地址与访问策略
软件已装包、服务状态、端口判断是否需要安装或重启
自定义环境、业务分组、负责人决定变量取值与审批路径
外部云标签、资产编号与资源编排对齐
把采集失败当成「不满足条件」会引发危险的重试或重复动作:应先区分采集失败与结果为否,采集失败时中断并要求人工确认,而不是继续往下执行变更。
采集要有明确的权限边界:读取服务状态、包列表等通常需要提权,过度提权会扩大自动化账号的影响面,建议按用途拆分账号或使用受限的提权规则。

易错点

  • 采集结果被缓存过久:主机状态早已变化,任务仍按旧数据判断,动作与现场不符
  • 把失败与为空混为一谈:采集报错被当成「条件不成立」,任务执行了不该执行的变更
  • 人工维护标识与自动采集冲突:两处对同一事实给出不同值,判断逻辑取哪一方没有规定,结果不稳定
  • 采集范围过大:每轮全量采集硬件与软件清单,执行时间被采集占掉大半,反而拖慢变更窗口

数据来源与参考

  • Red Hat《Ansible 官方文档:facts 与 setup 模块》
  • Kubernetes 官方文档(状态观测与控制器调和)
  • Prometheus 官方文档(指标与采集模型)

整理校对:其其网ICT文档中心 · 本页地址:docs.qiqicto.com/automation/facts-collection-state-discovery.html

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌​​​​‌​‌‌‌​‌​‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌​‌‌​‌​‌‌​​​​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌‌‌​‌‌​​‌‌​​‌‌​​​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌‌​​‌‌​​‌​‌‌​‌​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​​​‌‌​‌‌​​​‌‌​​‌​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌​‌​‌‌‌​​‌‌​‌‌‌​‌​​​‌‌​​​​‌​‌‌‌​‌​​​‌‌​​‌​‌​​‌​‌‌​‌​‌‌​​‌​​​‌‌​‌​​‌​‌‌‌​​‌‌​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌‌​‌‌​​‌‌​​‌​‌​‌‌‌​​‌​​‌‌‌‌​​‌​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​