1. 课程导入与Comware自动化运维全景
在传统网络运维中,工程师通过Console、Telnet或SSH逐台登录设备,手工输入命令完成VLAN划分、路由配置、ACL下发等操作。当网络规模从十几台设备扩展到数百台甚至上千台时,这种方式会迅速暴露三个问题:效率低(重复劳动多)、一致性差(同一策略在不同设备上出现偏差)、可追溯性弱(谁在什么时候改了什么,难以还原)。网络自动化运维与配置治理,正是为解决这三类问题而建立的一套工程方法。
本课程以H3C Comware网络操作系统为技术底座,围绕“自动化运维”与“配置治理”两条主线展开。学习目标可以概括为四点:第一,理解网络自动化运维的核心概念、价值与整体框架;第二,掌握Comware在自动化体系中的定位与可编程能力;第三,能够使用NETCONF、RESTful、Python脚本、Ansible等工具对Comware设备进行配置下发与状态采集;第四,建立配置治理意识,能够设计配置模板、版本管理、合规校验与变更审计流程。
一、什么是网络自动化运维
网络自动化运维,是指借助软件工具、脚本、API和编排平台,将网络设备的配置、监控、变更、备份、巡检等日常操作从“人工逐台执行”转变为“程序批量执行”的过程。它并不等于“无人运维”,而是把工程师从重复性操作中解放出来,让其专注于架构设计、策略制定和异常处理。
从能力层次看,网络自动化通常分为四级:
- L1 手工操作:逐台登录,逐条输入命令,依赖个人经验。
- L2 脚本辅助:使用Python、Shell脚本批量登录设备执行命令,减少重复输入。
- L3 模型驱动:基于YANG模型和NETCONF/RESTCONF协议,以结构化数据描述配置意图,设备自动校验并生效。
- L4 编排闭环:结合CI/CD、配置管理数据库(CMDB)和监控系统,实现“意图下发—状态采集—差异检测—自动修复”的闭环。
Comware V7及以上版本原生支持NETCONF、RESTful、Python脚本、Telemetry等能力,使设备可以直接作为自动化体系中的“可编程节点”,而不只是被动的命令接收者。
二、配置治理的核心内涵
配置治理(Configuration Governance)关注的是配置的“全生命周期管理”,包括配置的生成、审核、下发、备份、比对、合规检查和审计。它解决的核心问题是:如何确保网络中每一台设备、每一个时刻的配置都是正确、一致、可追溯的。
配置治理通常包含五个关键环节:
- 配置模板化:将重复性配置抽象为参数化模板,例如将接入交换机端口配置抽象为“端口号、VLAN、描述、速率”四个变量。
- 版本控制:将配置文件纳入Git等版本管理系统,记录每次变更的作者、时间、内容和原因。
- 合规校验:定义基线规则(如“禁止使用Telnet”“必须配置SNMPv3”“NTP服务器必须指向内网地址”),定期扫描设备配置并输出偏差报告。
- 变更审计:记录每一次配置变更的前后差异,支持回滚和追责。
- 自动备份:定时将设备当前配置备份到集中服务器,防止设备故障导致配置丢失。
三、Comware在自动化体系中的定位
Comware是H3C网络设备的操作系统,运行在交换机、路由器、无线控制器等产品上。在自动化体系中,Comware设备处于“被管理节点”的位置,向上通过标准协议或API与自动化平台交互,向下承载实际的转发与控制功能。
Comware提供的自动化接口主要包括:
| 接口/能力 | 协议或方式 | 典型用途 |
|---|---|---|
| CLI over SSH | SSH2 | 兼容传统脚本,适合过渡期批量执行 |
| NETCONF | NETCONF over SSH | 基于YANG模型的结构化配置下发与状态查询 |
| RESTful API | HTTP/HTTPS | 通过JSON/XML进行配置和监控数据交互 |
| Python脚本 | Comware内置Python解释器 | 设备本地执行自动化逻辑,减少外部依赖 |
| Telemetry | gRPC/HTTP | 高频采集接口流量、CPU、内存等运行数据 |
在实际项目中,这几种能力往往组合使用。例如:用NETCONF下发VLAN配置,用RESTful API查询接口状态,用Telemetry采集流量指标,用Python脚本在设备本地做异常自检。
四、整体框架:从意图到闭环
将上述概念整合起来,Comware自动化运维与配置治理的整体框架可以用一条“意图—执行—验证—治理”的链路来描述。下图展示了该框架的核心组成与数据流向:
图中左侧“意图与策略层”回答“要做什么”,中间“编排与执行层”回答“怎么做”,右侧“Comware设备层”是实际执行对象,下方“配置治理层”则贯穿始终,确保每一次变更都被记录、校验和可回溯。虚线反馈回路表示设备状态和配置差异会回流到编排层,触发下一步动作或告警。
五、一个最小可运行的示例
为了建立直观感受,下面给出一个使用Python通过SSH登录Comware设备并批量备份配置的示例。该示例假设设备已开启SSH服务,且已创建具有只读权限的用户。
import paramiko
import time
devices = [
{"host": "192.168.1.1", "user": "auto", "passwd": "Auto@123"},
{"host": "192.168.1.2", "user": "auto", "passwd": "Auto@123"},
]
for dev in devices:
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(dev["host"], username=dev["user"], password=dev["passwd"], timeout=10)
shell = ssh.invoke_shell()
time.sleep(1)
shell.send("screen-length disable\n")
time.sleep(0.5)
shell.send("display current-configuration\n")
time.sleep(3)
output = shell.recv(65535).decode("utf-8", errors="ignore")
with open(f"{dev['host']}_backup.cfg", "w", encoding="utf-8") as f:
f.write(output)
ssh.close()
print(f"{dev['host']} 配置备份完成")
这段代码虽然简单,但已经体现了自动化的基本要素:设备清单(devices列表)、连接建立(SSH)、命令执行(display current-configuration)、结果落盘(写入.cfg文件)。在实际生产环境中,还需要增加异常重试、并发控制、日志记录和配置比对等逻辑。
六、学习路径与关键认知
本课程后续章节将沿着“概念—工具—实践—治理”的路径逐步展开。在学习过程中,建议始终带着三个问题:
- 对象是什么:当前操作的是哪台设备、哪个接口、哪个VLAN、哪个配置片段?
- 输入和输出是什么:脚本或工具接收什么参数,产生什么配置或数据,如何判断成功?
- 如何治理:这次变更是否被记录、是否可回滚、是否符合基线?
网络自动化不是把手工命令简单塞进脚本,而是用工程化思维重新组织网络运维的输入、过程和输出。Comware提供了从CLI到NETCONF、从Python到Telemetry的完整可编程能力,使得这种工程化思维有了落地的技术基础。掌握这套框架,意味着你不仅能“配通一台设备”,还能“管好一张网络”。