王喆-用几行代码管理几十种网络设备

箕斯雅

2018/05/13 发布于 技术 分类

在运营商背景环境下,运维是阻挡不了各路大佬的规则的,当面对一个庞大组网架构,而其中包含了14种品牌厂商、30多种设备型号的网络设备时,我们一开始是拒绝的….但是最后算是艰难成功了。这篇文章给大家分享一下我们是怎样实现统一自动化管理的。

文字内容
1. GOPS 全球运维大会 2018 2018.4.13-4.14 中国·广东·深圳·南山区 圣淘沙大酒店(翡翠店) GOPS 全球运维大会2018·深圳站
2. 用几行代码管理几十种网络设备 王喆 中国移动南方基地 运维研发组成员 GOPS 全球运维大会2018·深圳站
3. 目录 1 几十种网络设备的故事 2 思路——自动运维 3 实现——Forward 4 总结 GOPS 全球运维大会2018·深圳站
4. 几十种网络设备的故事 1. 自我介绍:王喆 › 入职5年,中国移动Ecloud运维研发团队 › 运维平台产品设计以及研发 › 团队技术成果运营输出 GOPS 全球运维大会2018·深圳站
5. 几十种网络设备的故事 2. 分享适合人群 › 相似痛点的运维团队 › 希望转型自主研发 › 具备基础python脚本编写能力 GOPS 全球运维大会2018·深圳站
6. 几十种网络设备的故事 3. 设备增长 GOPS 全球运维大会2018·深圳站
7. 几十种网络设备的故事 4. 痛点 GOPS 全球运维大会2018·深圳站
8. 痛点 36 450 设备种类 设备数量 NN 指令差异 场景
9. 故障定位 客户 连不上云主机 挖断光纤 设备故障 删掉网卡 踢掉网线
10. 策略管理 审批 策略 路由
11. 目录 1 几十种网络设备的故事 2 思路——自动运维 3 实现——Forward 4 总结 GOPS 全球运维大会2018·深圳站
12. 思路——自动运维 1. 定一个小目标 先挣他一个亿 批量添加一个账号‘apple’ 3种厂商型号 300台设备数量 › 批量操作 › 异构系统 › 不同的指令 GOPS 全球运维大会2018·深圳站
13. 手动 批量添加一个账号 SSH登录 进入配置模式 执行“username apple password pw” 提交 X 100 SSH登录 进入配置模式 执行“local-user apple password cipher pw” 设定其他信息 提交 X 100 TELNET登录 进入配置模式 执行“set system login user apple class ABC” 设定密码 提交 X 100 思科 华为 Juniper
14. 脚本 批量添加一个账号 300 -> 3 设定一个100元素的列表,保存IP 开始循环,针对每一个IP: SSH连接登录 发送命令进入配置模式 获取结果判断 发送命令“username apple password pw” 获取判断结果 发送命令进行提交 获取判断结果 设定一个100元素的列表,保存IP 开始循环,针对每一个IP: SSH连接登录 发送命令进入配置模式 获取结果判断 发送命令“local-user apple password cipher pw” 获取判断结果 发送命令设定其他信息 获取判断结果 发送命令进行提交 获取判断结果 设定一个100元素的列表,保存IP 开始循环,针对每一个IP: TELNET连接登录 发送命令进入配置模式 获取结果判断 发送命令“set system login user apple class ABC” 获取判断结果 发送命令设定密码 获取判断结果 发送命令进行提交 获取判断结果 X1 思科 X1 华为 X1 Juniper
15. N 场景数量 N 设备种类 选取目标×N² 登录×N² 执行×N² 处理结果×N² 输出×N² 断开×N² 脚本工作量 脚本×N² 脚本×N² 脚本×N² 脚本×N² 脚本×N² 脚本×N²
16. N 场景数量 N 设备种类 选取目标×N² 登录×N² 执行×N² 处理结果×N² 输出×N² 断开×N² 用户目标工作量 指定×1 自动×0 简化脚本×N² 简化脚本×N² 指定×1 自动×0
17. 思路——自动运维 2. 工具应该具备的要素 › 提取同类步骤 › 屏蔽异构系统 › 屏蔽不同指令 GOPS 全球运维大会2018·深圳站
18. 思路——自动运维 3. 工具的目标形态 我要预处理自动化 我要各种自动化 排期 客服 现状 目标 研发 运维 运维你变了…. 工具新功能了解一下 自动化功能了解一下 客服 研发 运维 方便运维人员[自行]、[快速]实现需求: › 具备二次开发封装能力 › 被上层脚本调用能力 GOPS 全球运维大会2018·深圳站
19. 思路——自动运维 需求总结 › 提取同类步骤 › 屏蔽异构系统 › 屏蔽不同指令 › 具备二次开发封装能力 › 被上层脚本调用能力 底层:封装协议通道、基础功能 存在适配层:接入驱动各类设备 存在类库层:标准类库、属性和方法 形态:python模块 GOPS 全球运维大会2018·深圳站
20. 目录 1 几十种网络设备的故事 2 思路——自动运维 3 实现——Forward 4 总结 GOPS 全球运维大会2018·深圳站
21. 实现——Forward 1. 架构 GOPS 全球运维大会2018·深圳站
22. 实现——Forward 二线运维 2. 功能 用户 场景实例 配置核查 专线质量排查 防火墙策略管理 Vlan容量巡检 全量信息一键抓取 账号权限管理 自动封堵 …… 故障定位 账号开通删除 IP分配管理 工具 API 工具 核心框架 调度 执行 登录 登出 输出 实例化 SERVICE API 工具 标准类库 Cisco Juniper Huawei USG Array … 网络设备 Cisco Juniper Huawei USG Array … 平台 登录认证 鉴权 展示 资源管理 场景管理 …任务下发 GOPS 全球运维大会2018·深圳站
23. 实现——Forward 3. 生命周期 GOPS 全球运维大会2018·深圳站
24. 类封装 Forward 启动 生命周期 加载配置 Cisco Juniper USG Huawei Array Forward 标准类库集 Cisco Juniper USG Huawei Array Forward 标准类库属性 IP Type …. 目标设备 cisco USG Juniper Array Huawei Forward 标准类库方法 execute command ….. Forward 用户脚本 初始化 执行 逻辑 信息处理 输出
25. 实现——Forward 4. 标准类库 GOPS 全球运维大会2018·深圳站
26. Forward 实例入门 如何调用 类库 Cisco Nexus 7018 Cisco Nexus 7010 Cisco Nexus 5548 Cisco Nexus 5596 Cisco Catalyst 6509 Cisco Catalyst 6506 Cisco Catalyst 4510 FortiGate FG 3950 FortiGate FG 1240 Quidway S9312 Quidway S5800 USG FW 1000 UCBaiSssGceoF-NWneo1xdu0es0070-1n8o-dneode 基础类库,适用于新入网设备 nnooddee.i.pip 获n获获nn获noooo取取取取ddddeee目目目e目...pip.p标标标poo标rrI连IoPPttrI地地接Pt 地址址端口址 For ward n获获o取取de目目.p标r标o连m连接pt接端口端口 获nnoo取dde提e.p.示pro符rmomptpt n获获o取取de提提.lo示示g符in符(name,passwd) 类库百科 登n执n登n登noooo陆行陆陆ddddeeece...mele.olxxdogee指igccnuu令i(nttnee,a(((nmcc获mmaem取,ddp))a结es,sp果wads)swd) nn执oo行ddece.ma.deddx指eU令cseu,rt(en获a(取cmm结e,dp果a) sswd,pri) 添执加行ncammed用指户令,获取结果 nnooddee.d.aeldedteUUsseerr((nnaamme)e,passwd,pri) 删添除加用n户ame用户 n添noo加dde防e.a.火ddd墙ePl策eotl略iecyU(ssrecr,d(nesatm,poer)t,act) 删除用户
27. 实现——Forward 5. 结果展示 Forward 演示 GOPS 全球运维大会2018·深圳站
28. 场景 抓取客户网络配置 逐跳定位 代码行数:486 涉及模块数量:5 早期脚本 4 设备种类 18 设备数量 代码行数:202 涉及模块数量:1 Forward脚本 15 指令类型 19 获取信息
29. 实现——Forward 6. 小目标实现了吗? GOPS 全球运维大会2018·深圳站
30. 脚本 批量添加一个账号 300 -> 3 设定一个100元素的列表,保存IP 开始循环,针对每一个IP: SSH连接登录 发送命令进入配置模式 获取结果判断 发送命令“username apple password pw” 获取判断结果 发送命令进行提交 获取判断结果 设定一个100元素的列表,保存IP 开始循环,针对每一个IP: SSH连接登录 发送命令进入配置模式 获取结果判断 发送命令“local-user apple password cipher pw” 获取判断结果 发送命令设定其他信息 获取判断结果 发送命令进行提交 获取判断结果 设定一个100元素的列表,保存IP 开始循环,针对每一个IP: TELNET连接登录 发送命令进入配置模式 获取结果判断 发送命令“set system login user apple class ABC” 获取判断结果 发送命令设定密码 获取判断结果 发送命令进行提交 获取判断结果 X1 思科 X1 华为 X1 Juniper
31. 自研工具 Forward 批量添加一个账号 3 -> 0.x 设定一个列表,保存IP 设定目标厂家型号,连接信息,实例初始化(自动登录) 开始循环或者启动多线程,针对每一个IP实例Node: result = node.addUser(‘apple’, ‘pw’) 获取结果判断 X1 思科 华为 Juniper
32. 目录 1 几十种网络设备的故事 2 思路——自动运维 3 实现——Forward 4 总结 GOPS 全球运维大会2018·深圳站
33. 总结 1. Forward总结 ›Python模块 ›与目标设备之间的通道(SSH、TELNET、HTTP)封装 ›基于指令行CMD、XML等实现原子函数封装 ›标准类库,屏蔽设备差异 GOPS 全球运维大会2018·深圳站
34. 总结 2. Forward 开源计划 Forward Open Source https://github.com/tecstack/forward 欢迎加入 GOPS 全球运维大会2018·深圳站
35. 总结 3. Forward进阶部署建议 部署方案 描述 适用 额外开发 功能 执行方式 SSH Scripts Forward 脚本服务器: 直接部署在服务器上 小型、 测试环境 无 通过脚本调用 少 需要完整参数 可借助Ansible远程 SSH Scripts Smartnet DB Forward 高级脚本服务器: 配合小型DB,上层封 装 中小型 环境 少量 较 少 通过脚本调用 只需少量参数 可借助Ansible远程 HTTP WEB Service HTTP Service API Forward HTTP 平台后台服务: 封装事务接口实现数据 CMDB …… 抓取、配置下发等 大型环境 大量 多 Service 配合CMDB、WEB等 其他服务形成运维平台 通过web执行 GOPS 全球运维大会2018·深圳站
36. 总结 4. 团队其他成果介绍 WEB Service 前端web API Gateway API网关 Dora 配置管理 Ultron 运维操作 Resman 资源管理 Butler 系统管理 ……. ……. Host 节点 ……. Spider 网络 ……. Smartnet Forward GOPS 全球运维大会2018·深圳站
37. 总结 5. 小目标还能更简单吗? GOPS 全球运维大会2018·深圳站
38. GOPS 全球运维大会2018·深圳站
39. Thanks 高效运维社区 开放运维联盟 荣誉出品 火炉山蚁群 王喆 GOPS 全球运维大会2018·深圳站