结论先行:网络自动化做不下去,多数时候不是编排引擎不行,而是底下的动作没有拆开。"一键下发"这类整包动作在演示里好看,出事时却说不清改了哪一步、能不能只退那一步。可行做法是先把网络操作拆成六个原子动作——纳管、采集、建模、校验、下发、回滚,每个动作有自己的输入与产物,编排只负责把它们串起来。
一个典型的自动化平台分四层:外部接入层、编排与应用层、网络原子服务资源池、设备纳管层。真正让项目能长期维护的,往往是第三层——原子服务。这一层不显眼,却决定了两件事:换品牌时要不要重写流程,以及出问题时能不能只回退一步。
为什么"一键下发"会变成"一键事故"
整包动作里通常混了四件事:先采集现状、再判断影响、然后执行、最后验证。四件事捆在一个按钮后面,任何一个环节出偏差,能做的只有整体重来。更麻烦的是回退:不知道变更前是什么状态,回退就只能靠人回忆。
拆开之后逻辑就清楚了。校验归校验,下发归下发,回滚是拿着变更前的快照做一个独立动作。出了事能说得清——"卡在下发这一步,第 12 台没成功,其余已回滚"。
六个原子动作,各自的产物
| 动作 | 做什么 | 要留的产物 |
|---|---|---|
| 纳管 | 确认能否连上、用什么协议、用哪个账号 | 纳管清单与协议版本 |
| 采集 | 取配置、路由、会话、策略 | 带时间与版本的配置快照 |
| 建模 | 梳理链路、安全域、地址转换关系 | 拓扑与对象清单 |
| 校验 | 判断影响面、冲突与合规性 | 校验报告与阻断原因 |
| 下发 | 只执行变更,不再做判断 | 逐台回执与失败明细 |
| 回滚 | 回到指定快照 | 回滚记录与比对结果 |
这张表里,容易缺的是"校验"和"回滚"两项的产物。校验不留报告,出了事就无法证明变更前判断过;回滚不留记录,下一次变更仍然从零开始。
原子层与设备层分开,换品牌才不用重写
设备纳管层解决的是"怎么跟这台设备说话",原子层解决的是"这个动作的标准形态是什么"。两层之间做适配,上层流程就不必关心具体品牌。反过来说,如果把设备命令直接写进流程,每接入一个新品牌都要重写一遍,流程越长,重写成本越高。
这也是很多项目首期只覆盖一类设备的原因:先把这一类设备的六个动作跑通、跑稳,再扩到其他品类。品类扩张靠的是适配,不是重做。
编排只是把动作串起来
编排的价值在顺序与条件:什么情况下先校验后下发、失败到第几台就停、什么条件下自动回滚、哪些动作需要人工确认。这些规则能写清楚,前提是动作本身足够小、有明确输入输出。动作不原子,编排就只能写死,写死的流程换一个场景就失效。
边界与前提
其一,原子拆得越细,维护成本越高。合适的粒度是"失败时需要单独重试的那一步",不必拆到命令级。
其二,回滚要真的测过。有回滚能力与回滚有效是两件事,建议定期抽一个业务域走一遍回滚流程,记录耗时。
其三,先把一类设备做透。首期覆盖范围窄不丢人,做不到回滚才丢人。
- 把网络操作拆成纳管、采集、建模、校验、下发、回滚六个动作,逐个定输入与产物。
- 校验动作必须产出报告,写明影响面与阻断原因。
- 下发动作只执行不判断,判断全部前置到校验。
- 变更前强制打快照,回滚以快照为基准,不靠人工回忆。
- 设备适配与流程解耦,新品牌只加适配,不改流程。
- 首期只覆盖一类设备,跑通六个动作后再扩品类。
- 定期做一次回滚演练,记录实际耗时与比对结果。
深圳市奇摩计算机有限公司在网络自动化交付中,通常先和客户把原子动作与产物清单对齐,再谈编排怎么配——动作拆清楚了,后面的流程才有地方落。需要梳理原子服务与校验口径,欢迎预约咨询。
