核心目标:让网络工程师能用一句自然语言,生成可审核、可维护、可直接部署到 Cisco / Huawei 的自动化配置,包括模板、变量文件、多厂商差异化处理与幂等验证。
当 AI 成为网络工程的"前端解释器"之后,传统的自动化工具链(Ansible、Jinja2、Netconf/RESTconf、NAPALM、Paramiko)本质上发生了角色反转:
- 以前:你写模板 → 你填变量 → 你写 playbook → 你部署
- 现在:你写描述 → AI 产出模板/变量/Playbook → 你审核 → 你部署
看似只是把"写代码"挪给了 AI,但本质不是------正确的体系是:
AI 做语义建模与结构化转换,人类工程师保证意图正确与策略合规,最终形成一个高度可控的自动化流水线。
本篇文章,就是把这一条"自然语义 → 编排 → 模板 → Playbook → 合规校验"链路彻底讲透。
01|为什么把 AI 接入 Ansible/Jinja,不是"锦上添花",而是必然趋势
现实情况是,绝大多数网络工程团队的自动化失败不是因为不会写 Jinja2 模板,而是因为没人愿意维护模板。
原因很清晰:
1)模板的复杂度高:厂商差异巨大
同样一个 VLAN:
Cisco IOS
vlan 10
name PROD
Huawei
vlan 10
description PROD
Arista
vlan 10
name PROD
Jinja 模板要写成这样:
{% if vendor == "cisco" %}
vlan {{ id }}
name {{ name }}
{% elif vendor == "huawei" %}
vlan {{ id }}
description {{ name }}
{% elif vendor == "arista" %}
vlan {{ id }}
name {{ name }}
{% endif %}
这对于普通工程师是门槛;对于团队,是负担。
2)Playbook 结构多、模块多、依赖链多
例如生成 VLAN,要:
- inventory
- group_vars
- host_vars
- roles
- tasks
- templates
- handler
- connection plugin(netconf / network_cli)
新手面对"一堆目录",完全无法上手。
3)变化速度快:模板老化快、目录结构常年不更新
公司网络拓扑一年变一次,但模板可能四年不更新 。
结果是:
- Playbook 还能跑,但逻辑已经和现网脱节
- 自动化失灵,人又回到 CLI
AI 的介入点不是"替你写模板",而是"保持模板体系长期可维护"
AI 在这类任务最强的能力是:
- 自然语言 → 数据模型(YAML / JSON)
- 数据模型 → 模板 / 变量文件 / Playbook
- 配置策略自动对齐(多厂商差异语义映射)
- 自动审计(幂等、排序、字段缺失检查)
一句话总结:
AI 为网络工程解决的是"自动化工程本身的自动化"。
这才是你要在专栏中带给读者的"后 AI 网络工程观"。
02|"自然语义 → 自动化资产"的标准流水线(核心框架)
我先给出整体框架,后面逐段拆解,这是本篇文章最重要的部分:
【AI 自动化流水线核心 8 步】
① 需求解析(Intent Understanding)
输入自然语句:
"给总部园区新增 12 个办公 VLAN,编号 210--221,命名格式 office_xxx,Cisco 设备和 Huawei 设备都要生成。"
AI 转换成结构化模型:
task: create_vlans
vlans:
-
{ id: 210, name: office_210 }
-
{ id: 211, name: office_211 }
...
vendor_targets:
-
cisco_ios
-
huawei_vrp
site: HQ
deploy: true
② 数据模型校验(Schema Validation)
AI 自动检查:
- VLAN ID 是否越界
- 是否重复
- 是否缺字段
- 是否违反命名规则
- 是否包含保留网段/策略冲突(尤其安全策略)
必要时给出修正建议。
③ 多厂商语义映射(Semantic Vendor Mapping)
比如 NAT:
- Cisco:ip nat inside source static ...
- Huawei:nat static ... inside
- Juniper:在 security nat 体系下
AI 将"语义模型 → 厂商命令模型"映射成:
cisco_ios:
- command: "ip nat inside source static {{ inside }} {{ global }}"
huawei_vrp:
- command: "nat static global {{ global }} inside {{ inside }}"
这是本篇的关键知识点:
把多厂商互操作问题从"模板写死"提升为"语义层模型"的 AI 自动推理。
④ 模板生成(Template Generation via Jinja2)
AI 生成 Jinja2 模板,不是直接生成 CLI 配置。
生成后的模板:
- 要可读
- 要可维护
- 要最小差异化(减少条件分支)
- 要符合厂商最佳实践
后面会讲规则。
⑤ Playbook 生成(Ansible)
AI 生成:
- role 目录
- tasks/main.yml
- templates/xxx.j2
- vars/main.yml
- inventory
并保证:
- 幂等
- 有 check_mode
- 有 diff 模式
- 有安全回滚策略
⑥ 预部署审计(Dry Run / Compliance)
AI 自动生成:
- diff 报告
- 合规检查(如 VLAN 命名规范、ACL 冲突)
- 变更影响分析(如 OSPF 区域影响)
⑦ 部署与回滚(Execution & Rollback)
Ansible 执行时:
- AI 会生成回滚模板
- 检查设备版本、模块兼容性
- 自动识别错误并给出可能原因(Telemetry + LLM 分析)
⑧ 文档自动化(Documentation)
AI 自动生成:
- 设计文档
- 部署记录
- 配置意图文档(Intent file)
- 改动点列表
整条链路是一个 可标准化、可扩展 的体系结构。
03|AI 如何从"自然语义"中提取网络工程真正需要的数据结构
这一节解决一个关键问题:
AI 的输入应该是自然语言还是结构化描述?
现实是:人类会输入自然语言,但系统内部必须是严格的结构化语义。
例子:生成 12 个 VLAN(Cisco+Huawei)
输入自然语句:
"总部接入层新增办公网 VLAN 210--221,命名 office_xxx,Cisco 和 Huawei 都要支持,格式要对齐。"
AI 拆解为:
① 任务类型
create_vlans
② 操作范围
- site = HQ
- role = access-layer
③ 对象集合生成(range parsing)
AI 自动生成:
vlans:
-
{ id: 210, name: office_210 }
-
{ id: 211, name: office_211 }
...
- { id: 221, name: office_221 }
④ 厂商解析
AI 自动识别:
vendor_targets:
-
cisco_ios
-
huawei_vrp
⑤ 部署模式
默认生成:
deploy_mode:
check: true
enforce: true
为什么这一步极其关键?
因为:
Jinja 模板不需要知道"自然语言",它只需要结构化数据。
Ansible 也不需要知道"自然语言",它只需要 YAML。
所以 AI 的价值就是:
把"混乱的自然语言" → "结构化、可控的数据模型"
这就是工程上的"意图层"(intent layer)。
如果读者理解了这一点,他的自动化思维会提升一个维度。
04|AI 自动生成 Jinja2 模板的 7 条工程规范
这是你专栏最有价值的地方之一。
绝大多数人不知道:Jinja 模板也有工程规范,而且 AI 可以自动遵守。
① 不在模板写复杂逻辑(把逻辑留给变量层)
错误写法(常见):
{% if vlan.id >= 100 and vlan.id < 200 %}
name office
{% endif %}
正确写法:
vars
vlan_type: office
模板只做渲染:
vlan {{ id }}
name {{ vlan_type }}_{{ id }}
→ AI 需要懂这一点。
② 厂商差异必须在 templates 目录层分离,不在模板内部写 if-else
推荐目录结构:
roles/
vlan/
tasks/main.yml
vars/main.yml
templates/
cisco_ios/vlan.j2
huawei_vrp/vlan.j2
不要这样写:
{% if vendor == "cisco" %}
...
{% elif vendor == "huawei" %}
...
{% endif %}
这是模板灾难。
AI 会按正确方法生成。
③ 模板必须 100% 幂等(idempotent)
例如 VLAN 删除前需要确认存在:
{% if state == "absent" %}
no vlan {{ id }}
{% endif %}
AI 自动生成:
- "增删"两个模板
- 幂等判断
- 可回滚逻辑
④ 模板必须保持行级稳定,不允许 AI 生成随机空格或缩进
这点 AI 可通过规则保证:
- 禁止多余空行
- 禁止随机缩进
- 禁止 comment 注入(除非用户要求)
⑤ 模板必须尽量减少条件分支,保持长期可维护
例如 QoS 策略:
错误的(混乱):
{% if policy == "EF" %}
...
{% elif policy == "AF31" %}
...
{% endif %}
正确的:
qos_profiles:
EF:
dscp: 46
AF31:
dscp: 26
模板:
dscp {{ qos_profiles[profile].dscp }}
→ 逻辑全部外置。
⑥ 模板必须支持变量透传
AI 会确保模板支持:
{{ item.id }}
{{ item.name }}
{{ item.description }}
而不是写死。
⑦ 模板必须与 Ansible module 相兼容
例如 Cisco:
cisco.ios.ios_config:
Huawei:
community.network.ce_config:
模板要能与这些模块一起工作。
05|AI 自动生成 Playbook 的工程级目录结构(专家级标准)
要让自动化体系具备 可维护性、可审计性、可扩展性,目录结构必须遵循工程化规范。
绝大多数团队的自动化混乱,不是因为不会写 Ansible,而是因为:
- Playbook、模板、变量混在一起
- 多厂商逻辑写在同一个 role
- host_vars/group_vars 被滥用
- 不区分"意图文件"和"执行模板"
- 角色职责不清晰
- 没有 check_mode、没有 rollback
你要给读者一个"开箱即用、可长期运维"的结构,并让 AI 能按这个结构自动产出。
以下是我为你总结的 可被 AI 自动生成的标准工程目录规范(兼容 Cisco / Huawei / Juniper / Arista):
(1)顶层目录结构(项目级)
net-automation/
intent/ <-- 意图层(AI 输入/输出)
inventory/
hosts.yml
group_vars/
host_vars/
roles/
vlan/
acl/
ospf/
bgp/
...
playbooks/
vlan_create.yml
vlan_delete.yml
acl_apply.yml
...
compliance/
schema/
rules/
docs/
logs/
AI 的实际作用是:
把自然语言描述 → intent 文件
intent 文件 → 变量模型 → Playbook / Template 生成
也就是:
自然语义层
↓
结构化意图层
↓
渲染与执行层
如果读者理解这一点,他的自动化能力会提升一个等级。
(2)意图层(intent)是什么?
这是你文章体系的一大亮点,你要让读者看到:
未来网络工程不是直接写模板,而是写"意图文件"(Intent File)。
示例(AI 自动生成的 intent):
task: create_vlans
site: HQ
vendor_targets:
-
cisco_ios
-
huawei_vrp
vlans:
-
{ id: 210, name: office_210 }
-
{ id: 211, name: office_211 }
...
所有自动化流程都从这个文件开始。
intent 是整个工程体系的"上游",模板只是下游。
(3)role 的标准结构(你必须给读者一个模板化规范)
以 VLAN 为例:
roles/
vlan/
tasks/
main.yml
validate.yml <-- AI 自动生成的校验逻辑
deploy.yml <-- 发送配置
rollback.yml <-- 自动生成的回滚
vars/
main.yml
templates/
cisco_ios/vlan.j2
huawei_vrp/vlan.j2
arista_eos/vlan.j2
meta/
main.yml
AI 会保证:
- 每个 vendor 独立目录
- 幂等性写到 deploy.yml
- 回滚逻辑写入 rollback.yml
- validate.yml 用于"执行前审计"
这是一个真正工程级的自动化 role,不是初学者写的"只有一个 main.yml"。
(4)Playbook 应该由 AI 统一生成
典型 playbook:
- name: Create VLANs (multi-vendor)
hosts: "{{ site }}"
gather_facts: no
vars_files:
- "../intent/create_vlans.yml"
roles:
- vlan
要求:
- 必须支持 check_mode
- 必须支持 diff 模式
- 必须无条件幂等
- 必须可 rollback
后续会全面展开。
06|多厂商差异化处理:AI 如何实现"语义统一 → CLI 多版本映射"
这是文章最核心、最硬核、别人写不出来的部分之一。
(1)传统模板的错误方式
大部分人写的 Jinja2 模板是这样的(错误示例):
{% if vendor == "cisco" %}
vlan {{ id }}
name {{ name }}
{% elif vendor == "huawei" %}
vlan {{ id }}
description {{ name }}
{% endif %}
AI 不应该再复刻这种错误,而是要使用 语义→映射→模板 三层架构。
(2)三层架构:现代自动化的核心
① 语义层(AI 生成)
vlan:
id: 210
name: office_210
state: present
这是"意图模型",厂商无关。
② 映射层(AI 用规则自动生成)
(Semantic Vendor Mapping)
mappings:
cisco_ios:
create:
-
"vlan {{ id }}"
-
" name {{ name }}"
huawei_vrp:
create:
-
"vlan {{ id }}"
-
" description {{ name }}"
AI 的任务是:
- 自动判断 CLI 的语义位置
- 自动生成最小差异映射
- 自动生成命令顺序(语义排序)
- 自动排重
这一步由 AI 完成,是旧时代做不到的。
③ 模板层(Jinja2 渲染)
模板与 vendor 一一对应:
Cisco:
vlan {{ id }}
name {{ name }}
Huawei:
vlan {{ id }}
description {{ name }}
role 中每个厂商放在不同目录,避免 if/else 污染。
(3)AI 如何做语义统一?(真实工程场景)
例如:ACL
Cisco:
ip access-list extended PROD
permit tcp any any eq 443
Huawei:
acl number 3000
rule 5 permit tcp source any destination any destination-port eq 443
AI 做:
① 提取意图模型:
acl:
name: PROD
id: 3000
entries:
- { seq: 5, proto: tcp, src: any, dst: any, dst_port: 443 }
② 自动推断厂商模型:
Cisco → 基于名称
Huawei → 基于编号(AI 自动补齐编号)
③ 自动解决参数名差异:
- destination-port → eq
- rule sequence → seq
- IP 位置行为差异
这就是你要展示的"AI 的工程能力"。
07|AI 主导的自动化任务体系:检查、部署、回滚、合规
这是本篇最关键的内容之一。
自动化不只是"生成配置",而是完整生命周期管理。
我给你一个 Cisco + Huawei 通用的自动化"任务流水线"。
(1)预检查(validate.yml)
AI 生成的 validate.yml 包括:
- VLAN ID 越界
- ACL 冲突检测
- NAT 冲突(inside/outside)
- OSPF 区域冲突
- BGP ASN 检查
- 厂商兼容性(CE、IOS、XRV、NE、AR 全判断)
- 模板变量缺失
- required keys / type checking
示例(YAML):
- name: Validate VLAN ID range
assert:
that:
AI 会自动生成针对不同任务的校验。
(2)dry-run(check_mode)
AI 会确保:
ansible-playbook xxx.yml --check --diff
能完整展示:
- 即将写入的命令
- 移除的命令
- 变更范围
这是大型企业真正关心的,而不是"能不能跑"。
(3)部署(deploy.yml)
AI 会确保:
- 幂等
- 正确 vendor module
- 自动 CLI 事务性顺序
- 自动分段推送(大配置)
- 使用 best practice 的模块(cisco.ios.ios_config、community.network.ce_config)
部署示例:
- name: Apply VLAN (Cisco)
cisco.ios.ios_config:
lines: "{{ lookup('template', 'cisco_ios/vlan.j2') }}"
diff: true
backup: true
Huawei 类似。
(4)自动回滚(rollback.yml)
AI 自动生成撤销命令:
Cisco:
no vlan 210
Huawei:
undo vlan 210
回滚是:
ansible-playbook vlan_rollback.yml
这部分是传统模板无法做到的,而 AI 可以轻松生成。
(5)合规检查(Compliance)
AI 会自动生成:
- min/max 的规范
- naming convention
- ACL 全局冲突
- 接口速率一致性
- MTU 校验
- BGP 邻居状态检查
- VLAN 未使用检测(与 telemetry 联动)
完整合规报告:
compliance/report_HQ_2025-01-10.json
这是后 AI 时代的"基础设施即策略"(IaC + Compliance)。
08|如何用 AI 维持一个"可长期存活"的自动化仓库(真正核心)
你写这篇的终极目的不是告诉读者"AI 能写模板",而是:
AI 能让自动化体系长期不腐烂、不老化、不崩溃。
你必须给读者一套"运营指南"(这部分含金量非常高)。
(1)AI 负责:重复性维护工作
AI 自动完成:
- 模板更新
- Playbook 增量补丁
- 多厂商逻辑同步
- 意图文件生成
- 合规规则更新
- 自动补文档
- 任务链路检查
人类只负责:
- 定义意图
- 审核策略
- 批准部署
工程成本骤降。
(2)AI 保证:仓库结构不腐烂
传统自动化仓库的问题:
- 角色混乱
- 模板逻辑污染
- 变量不统一
- 同类设备文件重复
AI 通过规则保证目录结构永远一致。
(3)AI 驱动的"自动化 CI/CD"
你要告诉读者:
未来不是"配置即代码"(Git),而是:
配置即策略 + 模板即模型 + AI 即对齐器
AI 做的 CI/CD 包括:
- intent → schema 校验
- template → syntax 检查
- playbook → 幂等验证
- diff → 合规检查
- alarm → telemetry 像 SRE 体系
(4)AI 是"自动化的自动化"(核心金句)
传统自动化是降低"执行成本"。
AI 自动化的作用是降低"维护成本"。
这句话写在专栏里会成为你的招牌观点。
附录:全流程示例(VLAN / ACL / OSPF / BGP / VXLAN / QoS)
我将提供一个完整例子(示例略写,Part 3 全文展开):
输入自然语义:
"在总部接入层为办公区新增 VLAN 210--221,Cisco 和 Huawei 都要,命名 office_xxx,生成配置和 Playbook。"
AI 生成 intent
→ 数据模型
→ 校验
→ vendor 映射
→ 模板
→ Playbook
→ 合规
→ 回滚
→ 文档
一个命令:
ansible-playbook playbooks/vlan_create.yml
就完成全链路部署。
09|完整实战案例:VLAN 自动化(Cisco/Huawei 全链路)
① 输入自然语义
在总部接入层新增办公 VLAN 210--221,命名 office_xxx,Cisco 和 Huawei 设备都要生成配置。
② AI 生成意图文件(Intent File)
task: create_vlans
site: HQ
vendor_targets:
-
cisco_ios
-
huawei_vrp
vlans:
-
{ id: 210, name: office_210 }
-
{ id: 211, name: office_211 }
...
- { id: 221, name: office_221 }
deploy_mode:
check: true
enforce: true
③ AI 生成数据模型
- VLAN ID 校验(1--4094)
- 命名规则校验
- 重复 VLAN 检查
- 多厂商映射规则应用(Cisco / Huawei)
④ 模板生成(Jinja2)
Cisco IOS 模板
vlan {{ id }}
name {{ name }}
Huawei VRP 模板
vlan {{ id }}
description {{ name }}
模板目录规范:
roles/vlan/templates/
cisco_ios/vlan.j2
huawei_vrp/vlan.j2
⑤ Playbook 生成
playbooks/vlan_create.yml
- name: Create VLANs (multi-vendor)
hosts: "{{ site }}"
gather_facts: no
vars_files:
- "../intent/create_vlans.yml"
roles:
- vlan
- 幂等性保证
- check_mode / diff 模式
- rollback 模板关联
⑥ Dry-run / 差异检查
ansible-playbook playbooks/vlan_create.yml --check --diff
输出示例:
VLAN 210 will be created on Cisco IOS: vlan 210 name office_210
VLAN 210 will be created on Huawei VRP: vlan 210 description office_210
- 没有真实变更,确保可控
- AI 自动生成 diff 报告
⑦ 部署
ansible-playbook playbooks/vlan_create.yml
- 自动执行 role/tasks/deploy.yml
- 自动生成日志 / backup
- 同步更新配置仓库
⑧ 回滚
如果部署异常,AI 自动生成 rollback.yml:
ansible-playbook playbooks/vlan_rollback.yml
- Cisco: no vlan 210
- Huawei: undo vlan 210
这就是全链路自动化的核心价值:Intent → Template → Playbook → diff → deploy → rollback → 文档
10|ACL 自动化(字段解析 + 冲突检测 + 策略排序)
① 自然语义输入
总部 ACL PROD: 允许 TCP 443,禁止所有其他流量,Cisco/Huawei 自动生成。
② AI 生成意图文件
task: create_acl
acl_name: PROD
entries:
-
{ action: permit, proto: tcp, dst_port: 443, src: any, dst: any }
-
{ action: deny, proto: ip, src: any, dst: any }
vendor_targets:
-
cisco_ios
-
huawei_vrp
③ AI 自动解析字段
- 协议名称
- 源/目的 IP
- 端口范围
- 顺序(优先级)
④ 厂商映射
- Cisco:使用 ACL 名称和序列号
- Huawei:ACL 编号 + sequence
⑤ 模板与 Playbook
- Cisco: cisco.ios.ios_config
- Huawei: community.network.ce_config
⑥ 冲突检测与排序
- ACL 规则自动排序
- 与现有 ACL 冲突检查
- AI 自动提示冲突点
11|OSPF 自动化(区域划分、LSA 控制、厂商差异)
① 自然语义输入
总部与分支采用 OSPF 区域划分: HQ 区域 0,Branch 区域 1,Cisco/Huawei 自动生成配置。
② 意图层生成
task: configure_ospf
areas:
0: HQ
1: Branch
interfaces:
-
{ name: Gig0/0, area: 0 }
-
{ name: Gig0/1, area: 1 }
vendor_targets:
-
cisco_ios
-
huawei_vrp
③ AI 自动生成模板
- Cisco IOS: router ospf 1 ... network ... area ...
- Huawei VRP: ospf 1 area ...
④ LSA 控制 & 验证
- LSA 类型 / 广播控制
- AI 自动生成 OSPF 验证 playbook:邻居状态检查
12|BGP 自动化(prefix-set、route-policy、厂商差异)
① 自然语义输入
总部 BGP ASN 65000 与 ISP 65010 建立 EBGP,广告 10.0.0.0/24,Cisco/Huawei 自动生成策略。
② 意图文件
task: configure_bgp
local_as: 65000
neighbor_as: 65010
prefixes:
- 10.0.0.0/24
vendor_targets:
-
cisco_ios
-
huawei_vrp
③ AI 自动生成策略
- Prefix-list / route-policy 自动映射
- 序列号自动生成
- 差异化 CLI 自动调整
13|VXLAN Fabric / EVPN 自动化(数据中心级)
- Intent 文件:VNI、BD、VTEP
- AI 自动生成 Cisco Nexus / Huawei CloudEngine VXLAN 配置
- 自动处理 BGP EVPN overlay / underlay 配置
- 自动生成验证 playbook(ping、MAC table、ARP table)
14|QoS 自动化(Cisco/Huawei/Juniper 差异)
- 输入自然语义:为语音和视频生成 EF/AF 优先级
- AI 自动生成策略模板:
- Cisco MQC / class-map / policy-map
- Huawei traffic classifier / traffic behavior / traffic policy
- Juniper firewall filter / forwarding-class
- 自动生成 playbook / rollback / diff
15|总结:AI 驱动的下一代网络自动化体系架构
- 自然语义 → 意图层 → 数据模型 → 模板 → Playbook → diff → 部署 → 回滚 → 文档
- 多厂商统一语义映射是核心价值
- 全生命周期自动化:校验、部署、回滚、合规、文档
- 工程化约束保证长期可维护、幂等、清晰
- AI 的价值是自动化的自动化,不仅降低部署成本,更降低维护成本
- 网络工程师角色升级:从写命令 → 审核意图 → 审批策略 → 战略级监控
这一篇完整展示了 AI + Jinja2/Ansible 在 Cisco/Huawei 网络全链路自动化中的实际应用 。在网络工程中,无自动化不网工。自动化是入门合格的标志,自数年前某认证加入脚本课程的时候就决定了这一标志。
(文:陈涉川)
2025年12月2日