【新人贴】使用trace开发命令行工具,辅助配置文件生成,减少人为输入错误的风险。

1.摘要:使用trace基于python3开发一套交互式的配置生成工具

2.背景:作为一名近10年的老网工,面对批量的设备配置工作时,因需要手动编写大量的命令配置,但由于人为的手动复制粘贴,会经常出现失误且费时费力。现在用了AI编程工具后,可以对trace说出需求,让trace来优化提示词,充分了解我们的需求后,编写出一份半自动化的配置生成器。

3.实践过程:

  • 需求定位:在使用编程工具之前,明确了自己的痛点,以及需要的目标效果
  • 工具选择:从B站上看到众多博主对trace的评测后,并且考虑字节的一大背景,选择了trace这个工具
  • 项目框架:一开始使用一份自己编写的详细需求文档,先丢给AI,参考下图
  • 框架搭建:根据具体的需求文档,让不同AI给出一份项目框架,最终整合到最优方案
project/
├── data/                  # 原始输入数据(配置来源)
│   ├── services.yaml     # 这个文件定义所有配置相关的关键字,和厂商无关,变量内容会被builder-.py调用并修改变量内容
│
├── models/                # 数据处理 / 调用service.yaml各子段赋值,传递给子模板生成配置
│   ├── normalize.py #
│   ├── validator.py #校验数据模块
│   └── builder-I.py  # config.py会调用本模块生成对应I类型的配置文件
│
├── templates/  # Jinja2模板层,模板中j2文件用if根据不同厂商生成不同子配置
│   ├── Cisco
│   │   ├── vrf.j2
│   │   ├── interface.j2
│   │   ├── limit.j2
│   │   └── bgp.j2
│   │   └── route-map.j2
│   ├── Huawei
│   │   ├── vrf.j2
│   │   ├── interface.j2
│   │   ├── limit.j2
│   │   └── bgp.j2
│   │   └── route-map.j2
│   ├── Juniper
│   │   ├── vrf.j2
│   │   ├── interface.j2
│   │   ├── limit.j2
│   │   └── bgp.j2
│   │   └── route-map.j2
├── config.py # 全局配置(路径/开关),根据--参数来,交互式/非交互式输入参数,调用builder-I.py
└── requirements.txt #采用虚拟化环境部署,及项目相关模块

  • 项目实现以及调优:使用trace读取项目框架,并附带上需求文档

4.成果展示:

  • 执行脚本后,命令会输出提示词

  • 执行具体的输入

  • 输出结果

5.效果与总结:

总体效果还是非常满意的,至少比人工编程搜问题来的快,并且在功能实现上,比传统的编程效率高很多,质量也更好。但是也有不足的地方,比如某些函数中不支持的参数,有时候AI会存在错误使用非法参数情况,也要多注意测试和甄别,当然SOLO也可以自己完成测试和修复。

1 个赞