部署自动化在路由调优中的真实体验:省事还是添堵?

最近帮朋友调一台企业级路由器,他刚上线一套自动部署脚本,说是能一键下发策略、批量改BGP参数、自动备份配置。结果第一天就卡在OSPF区域ID没对齐,设备反复reload,连不上管理口——这事儿得从头捋清楚。

省心的地方,真省

比如每周五下午要给12台分支路由器同步QoS策略:手动登设备、复制粘贴、逐台确认,半小时起步,还容易漏掉某台的DSCP标记。换成Ansible跑个playbook,

- name: Apply QoS policy to edge routers
  ios_config:
    src: ./templates/qos_template.j2
  loop: "{{ edge_routers }}"
3分钟全部推完,日志里清清楚楚哪台成功、哪台报错(比如ACL条目超限)。再比如半夜突发链路切换,监控告警一响,自动脚本立刻把备用ISP的BGP权重拉高、关闭主线路路由反射,比人爬起来敲命令快得多。

踩坑的时候,也真狠

自动化不是万能胶水。有次用Python+Netmiko批量修改ACL,脚本里写的是ip access-list extended FILTER-IN,但其中两台老款Cisco ISR G2固件不支持extended关键字缩写,直接卡死在配置模式里,后续命令全没执行,ACL反而被清空了。还有一次Jinja2模板里少了个{%,导致生成的OSPF network语句变成network 0.0.0.0 255.255.255.255 area 0,整张路由表瞬间乱套。

适合谁用?先摸清底子

如果你手头是统一型号、固件版本一致的华为AR系列或H3C MSR,且配置变更逻辑清晰(比如只动静态路由、NAT和端口映射),那Ansible或SaltStack上手很快。但要是混着Juniper EX、旧款TP-Link TL-R480T+、还有几台OpenWrt软路由,脚本得写三套驱动逻辑,维护成本可能比手动还高。另外,别指望自动化替你判断“为什么这条路由突然metric变大”——它只会忠实执行,不会思考。

说白了,自动化不是替代脑子,是把重复动作交出去,腾出时间盯真正的异常:比如BFD会话闪断背后的光模块衰减,或者ECMP负载不均背后的真实流量特征。路由调优这事,工具越顺手,越得把底层协议细节刻进肌肉记忆里。