可编程网络自动化
上QQ阅读APP看书,第一时间看更新

2.1 为什么要实现网络自动化

和大多数自动化类型一样,网络自动化被视为一种提高操作速度的手段。速度更快固然不错,但对很多 IT(信息技术)组织而言,减少部署和变更配置的时间未必总是亟待解决的问题。

本章将探讨各种形式和规模的 IT 组织应当考虑逐步采用网络自动化的一些原因,包括速度在内。你会发现,同样的原则也适用于其他类型的自动化(应用程序、系统、存储、电话通信等)。

2.1.1 简化架构

如今,大多数网络设备的配置就像是一片片独一无二的雪花(有很多一次性的非标准配置),网络工程师们经常用一些一次性网络变更来解决传输和应用程序出现的问题,并以此为荣,但这种做法到最后不仅使得网络难以维护和管理,还增加了实现自动化的难度。

应该摒弃那种视网络自动化和管理为次要项目或“附加品”的想法,而是选择在建立新架构的时候就将自动化和管理纳入其中。这就确保了有适当的人员和工具的预算。遗憾的是,在预算不足的时候,首先被砍掉的就是各类工具。

端到端架构及其相关的次日运维(day 2 operation)需要被视为一体。在建立架构时需要考虑以下问题。

•哪些功能可以在不同的厂商之间使用?

•哪些扩展可以在不同的平台之间使用?

•哪种类型的 API 或自动化工具是适用于特定的网络设备平台的?

•有没有可靠的 API 文档?

•特定产品都对应什么库?

如果这些问题能够在早期的设计过程中得出答案,那么最终的架构也会变得更简单、可重复、易于维护和自动化,在整个网络中启用的厂商专有扩展也会更少。

即使在使用正确的管理和自动化工具部署好简化后的架构之后,仍有必要将一次性变更的数量降至最低,以确保网络配置不会再次变成一地“雪花”。这一点务必记住。

2.1.2 确定性结果

在企业组织中,召开变动评审会议是为了对即将做出的网络变更、对于外部系统的影响以及回滚计划进行审议。在使用 CLI 完成这些变更的世界里,输错命令造成的影响是灾难性的。想象有一支拥有数名或者数十名工程师的团队。大家在进行变更的时候,都有自己的习惯做法。而且,就算能使用 CLI,甚至是 GUI(Graphic User Interface,图形用户界面),也无法消除或降低在变更期间出错的概率。

与手动操作相比,使用经过验证和测试的网络自动化进行变更的行为更具可预测性,为执行团队实现确定性结果提供了更好的机会,从而进一步保证了在没有人为错误的情况下能够尽早顺利完成手头的工作。这对从修改 VLAN 到需要在网络中做出多处变更以纳入新用户的各种任务都适用。

2.1.3 业务敏捷性

我们知道,网络自动化为部署变更提供了速度和敏捷性,但它也能响应业务需求,快速地从网络设备中检索数据,或者说得更实在些,能够尽可能快地动态排除网络故障。

随着服务器虚拟化的出现,服务器和虚拟化管理员有能力在瞬间部署好新的应用程序。应用程序部署得越快,关于为什么配置网络资源(比如 VLAN、路由、防火墙策略、负载均衡策略,如果部署的是新的三层架构应用程序,那么上述各种配置一个都少不了)要花费这么久的疑问就越多。

很明显,通过采用网络自动化,网络工程师和运维团队得以更快地响应其对应的 IT 部门并完成应用程序部署,但更重要的是,网络自动化有助于提高业务敏捷性。从采用的角度来看,在尝试采用任何类型的自动化之前,不管使业务更加敏捷的设想有多好,理解现有的、往往还是手动形式的工作流才是最重要的。

如果不知道要自动化什么,就会使自动化过程变得更复杂并出现拖延。在开启网络自动化之旅的时候,首要建议是始终要理解现有的手动形式工作流,并形成书面文档,同时弄清楚其对于业务造成的影响。如此一来,自动化技术和工具的部署过程就变得简单多了。

从简化架构到业务敏捷性,本节介绍了一些关于为什么应该考虑网络自动化的观点。下一节将描述不同类型的网络自动化。