ansible 的 stat 模块用于配置文件完整性校验,核心是“采集可信基准快照 + 定期重算比对”,支持多文件、动态路径过滤及告警集成,是轻量可控的校验链数据采集端。

用 Ansible 的 stat 模块做配置文件完整性周期校验,核心不是“单次比对”,而是“采集基准快照 + 定期重算比对”。它本身不存储历史、不自动告警,但能可靠获取当前文件的哈希值和元数据,是构建校验流水线最轻量、最可控的一环。
准备可信基准:首次采集并存档校验值
在校验开始前,必须在系统处于可信状态(如刚部署、刚通过安全审计)时,生成一份权威的校验快照。推荐使用 sha256 算法,兼顾安全性与兼容性:
- 在 Playbook 中调用
stat模块,指定get_checksum: yes和checksum_algorithm: sha256 - 用
register捕获返回结果,从中提取stat.checksum - 将结果写入中央存档(如 Git 仓库、只读 NFS 目录或带签名的备份),避免被篡改
示例任务:
- name: 获取 nginx 配置文件当前 SHA256 值
ansible.builtin.stat:
path: /etc/nginx/nginx.conf
get_checksum: yes
checksum_algorithm: sha256
register: nginx_conf_stat
- name: 记录基准校验值到本地文件(仅用于演示) ansible.builtin.copy: content: "{{ nginx_conf_stat.stat.checksum }} /etc/nginx/nginx.conf" dest: "/tmp/nginx.conf.sha256.base" mode: '0400'
执行周期校验:比对当前值与基准值
后续每次巡检,重复采集当前校验值,并与基准值做字符串比对。关键点在于:不依赖本地命令(如 sha256sum -c),全部由 Ansible 控制流程,确保跨平台一致:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 再次运行
stat获取当前checksum - 用
lookup('file', ...)读取存档的基准值(注意去除空格和路径前缀) - 用
assert或fail模块判断是否相等,触发告警或通知
示例断言逻辑:
- name: 读取基准 SHA256 值
ansible.builtin.set_fact:
base_checksum: >-
{{ (lookup('file', '/tmp/nginx.conf.sha256.base') | trim).split()[0] }}
- name: 断言配置未被修改
ansible.builtin.assert:
that:
- nginx_conf_stat.stat.checksum == base_checksum fail_msg: "ALERT: /etc/nginx/nginx.conf has been modified! Expected {{ base_checksum }}, got {{ nginx_conf_stat.stat.checksum }}" success_msg: "OK: /etc/nginx/nginx.conf integrity verified"
扩展为生产级巡检:支持多文件、忽略动态内容
线上环境往往需校验数十个配置文件,且要跳过日志、缓存等必然变动的路径。可通过以下方式增强:
- 用
loop遍历文件列表,每个文件独立采集 + 独立比对,失败时明确指出哪个文件异常 - 对
/var/log/、/tmp/、/run/等目录下的文件,跳过stat调用,或在比对前用when过滤 - 结合
stat.isfile和stat.exists判断文件是否存在,防止因缺失导致误报 - 将校验结果统一注册为 facts,在最后用
debug或community.general.log_plays输出汇总报告
与其它机制协同:不止于 stat
stat 是校验链的“数据采集端”,实际运维中建议组合使用:
- 对静态核心文件(如
/etc/passwd,/boot/grub2/grub.cfg),用stat + sha256周期巡检即可满足大部分合规要求 - 对高频变更目录(如 Web 应用目录),补充
inotifywait实时监听 + 自动触发stat快照,实现“变更即捕获” - 对高安全等级系统,搭配
AIDE数据库做全盘完整性审计,stat可作为其轻量补充,快速验证关键项 - 所有校验失败事件,通过
community.general.slack或community.aws.sns模块推送告警,不依赖人工查看日志










