自动运维工具和系统分享!( 二 )


知道服务器的IP,请问连接在交换机的哪个口? 知道交换机的某个端口,请问连接的服务器的IP是多少? 给你一台服务器的MAC地址,怎么知道在哪个交换机的哪个口?大型互联网公司一般都有CMDB或者网管平台来记录这些信息,但是如果你是中小企业的网管,没有运维R&D团队的支持,而且你还在用二层环境(服务器网关在核心设备),那就比较困难了 。其实说到底,以上问题是为了理清三个要素的对应关系:PORTMACIP 。
例如:
一台交换机有多个物理接口,一个物理接口可以有多个MAC,一个MAC可以对应多个IP,也可以不对应 。有了这个基本模型,我们只需要做两件事,就可以找到整个网络设备三要素之间的对应关系 。
先去直接连接服务器的交换机获取MAC表(即MACPORT),再去服务器的网关设备获取ARP表(即IPMAC) 。这两张表可以根据MAC地址作为唯一主键得到端口MACIP的对应关系 。
这些信息可以通过模拟登录或OID收集来获取,Github中有很多类似的代码可供参考 。有了这种通信,即使没有CMDB,你仍然可以快速找到所需的信息 。普通网络工作者需要5分钟才能找到这些信息,而你只需要5秒钟 。
网络北向接口的二次封装
在日常的网络运维工作中,经常会有一些“简单重复的任务”,比如:为一个接口划分Vlan/为一个设备添加到主机的路由等 。这些操作并不科技,还占用了工程师的宝贵时间 。更何况,简单的人肉操作,如果重复的次数足够多,总是会出错 。而所谓“河边走,往往湿鞋”,就是在这个问题上犯的 。
以交换机接口自动划分Vlan的功能为例 。如果有一个工具只需要你提供三个参数:设备IP/端口/Vlan号,就可以自动登录设备将特定接口划分到指定的Vlan,岂不是很美好?
没错!你需要的是一个封装设备的接口 。现在大部分网络设备厂商都会提供自己的API,不管是NETCONF还是RESTful 。只要你阅读用户手册,你就可以很容易地通过程序改变设备的配置 。你甚至可以用一种更“接地气”的方法,用程序“模拟登录”设备 。这种方式虽然效率不如NETCONF和RESTful API,但是普适性无敌,因为没有哪个厂商的设备不支持SSH 。
有了这个理论基础,一些简单的网络操作可以通过自己封装的接口进行更改,甚至可以将更改权限交给业务 。只要业务提交的请求是合法的,更改就可以立即生效 。
此时,有人会大惊失色!把网络设备的权限交给商家真的好吗?如果出了问题怎么办...所有的疑惑都是正常的,同时都是可以解决的 。
以交换机接口的自动Vlan划分为例,可以限制程序执行的内容,可以规定交换机只能是TOR不能是CSW,可以限制接口是Access不能是Trunk,可以限制操作接口下的流量为0bps,避免误操作影响业务 。您可以通过动态令牌来确保接口的安全性 。可以要求必须提供接口下已有的MAC来定位接口的位置,也可以将调用者列入白名单 。另外,操作成功后,需要有操作结果的短信+邮件反馈,等等...
所有的考虑都可以固化成代码规则,只有程序才是最忠实的执行者 。接口可以提供全年7*24小时服务,但是人的精力是有限的 。用程序处理简单常规的业务需求,节省工程师思考人生的宝贵时间,才是网络工程师自动化运维的正道 。
摘要
【自动运维工具和系统分享!】以上是笔者结合自身工作经验总结的一些思路 。网络工程师写代码确实很难,但只要跨过这个坎,你就会获得更丰富的时间去拓展你的职业道路 。谨以此文,希望能为自动化网络运维做出一份贡献 。


推荐阅读