演练按预案执行,第一条切换命令就报 No such file or directory,第二条脚本参数已经改成必填,第三条调用的接口半年前下线。40 分钟的演练有 25 分钟在找正确命令。乍看像缓存或者权限的锅,追下去往往不是。

ls -l ops/runbook/
bash ops/runbook/switch-traffic.sh --dry-run
bash ops/runbook/rollback.sh --help | head -5

追下去是这么回事:预案写在共享文档里,脚本改了没人回头更新。评审只审代码,没有人把预案当成需要跟着版本走的产物。

「预案文档过期」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。一次只改一处,改完立刻验证,几个改动叠在一起,出问题就说不清是谁导致的。

先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。

具体做法是,把预案里的命令抽成脚本 和代码一起提交 一起评审;每次演练后当天更新预案 记录实际执行过的命令;预案里只写脚本入口 不写具体参数细节;每季度跑一次 dry-run 校验脚本还能执行。

验收就看一点,按预案从第一条执行到最后一条没有报错,dry-run 能在 5 分钟内跑完。

作者 9823189