Puppet noop与apply配置版本不一致且执行后重复提示变更问题
Puppet 持续重复上报待变更问题排查方案
1. 排查Exec资源重复执行问题
Exec资源默认每次Puppet运行时都会触发执行,必须配置幂等校验参数才能避免重复运行:
- 检查
stop-server、delete-pack、unzip-update、Restart awslogsd service这几个Exec资源的定义,确认是否补充了以下任意一种幂等校验规则:onlyif/unless:执行前先运行校验命令,仅符合预设条件时才执行Exec逻辑creates:指定Exec执行成功后会生成的文件路径,文件已存在则直接跳过执行refreshonly:仅当依赖的资源触发刷新事件时才执行,适合重启、清理类操作
- 你当前输出中Exec每次都被判定为待执行,属于典型的未配置幂等规则导致的问题,和缓存无关。
2. 排查deployment.yaml文件重复变更问题
从diff输出可以看出差异是行首缩进不一致,按以下路径排查:
- 先核对该File资源对应的源文件/ERB/EPP模板内容,确认
# Carbon Configuration Parameters这行的缩进是否和预期一致,排除模板本身缩进配置错误的问题 - 校验是否有其他进程在Puppet运行后修改该文件:手动按照diff调整好文件缩进后,间隔几分钟查看文件内容是否被篡改,排除其他运维脚本、服务自启动逻辑自动修改配置的可能
- 检查File资源的属性配置:确认文件所有者、权限配置是否和节点上的实际权限匹配,权限不一致也会导致Puppet每次尝试覆盖文件
- 排查换行符差异:如果模板是Windows系统编辑上传的,会带有CRLF换行符,而Linux节点本地文件为LF换行符,也会每次判定为内容差异,将模板换行符统一改为LF即可解决。
3. 修复验证步骤
调整完配置后按以下顺序验证效果:
- 手动修正当前节点上
deployment.yaml的缩进,确保和Puppet侧配置完全一致 - 执行
puppet agent -vt,确认本次运行没有变更输出 - 间隔3分钟再次执行
puppet agent -vt,确认没有重复上报的变更即修复完成。
内容的提问来源于stack exchange,提问作者Jananath Banuka
相关产品推荐
相关产品推荐

