团队构建过程中面向的登台或开发环境、往往与部署时面向的生产环境并不同步,导致发布管道中的环境漂移问题,而基础设施即代码(IaC),或能解决这一问题。基础设施即代码能够自动配置基础设施,帮助企业以更高速度、更低风险以及更低成本实现云应用程序的开发、部署与扩展。在本文中,我们将深入探讨基础设施即代码及其核心优势。
基础设施即代码是什么?
IaC选择使用机器可读的定义文件替代物理硬件配置或交互式配置工具,借此管理并配置数据中心内的计算机系统。简而言之,IaC主张通过简单的代码行取代IT资源管理及配置中的手动操作流程。
基础设施即代码(IaC)是一种自动化基础设施管理方式,最典型的IaC流程主要包含以下三个步骤:1. 开发人员使用特定领域语言对基础设施规范进行定义与编写。2. 将创建的文件发送至管理API、主服务器或代码repo。3. 之后,由IaC平台执行具体操作,完成计算资源的创建与配置。
IaC本身也是一项必不可少的DevOps实践,可谓是实现良好软件交付生命周期的重要前提。IaC能够帮助DevOps团队以完全符合版本源代码的方式快速完成基础设施创建及版本化,同时持续跟踪各个版本,以避免各IT环境间因一致性冲突而引发严重的部署问题。作为一项重要DevOps实践,IaC通常与持续交付结合使用。
IaC通常有两种实现方式:声明式(函数式)与命令式(程序式)。这两种方法之间的本质区别,在于一方强调“什么”、另一方强调“如何”。声明式方法侧重于描述所需的最终配置应该是什么样子;而命令式则关注如何操作基础设施来达成这样的配置状态。
总而言之,声明式方法负责定义希望达成的状态,系统则通过必要操作实现这一目标状态;命令式方法定义必要的操作顺序,通过一系列特定命令将基础设施调整为所需状态。
IaC还提供“pull”与“push”两种方法,二者的区别体现在向服务器报告如何配置的具体方式上。在pull方法中,要配置的服务器将从控制服务器处拉取配置信息;而在push方法中,控制服务器会将配置信息推送至目标系统。
基础设施即代码的优势
基础设施即代码的优势首先在于降低了成本,通过清除手动操作,人们能够将精力重新集中在真正重要的任务身上。
其次,IaC能够加快基础设施的配置速度,并借助可见性优势帮助企业内的其他团队提升工作速度、强化工作效率。
第三,降低风险。自动化机制消除了由人类错误引发的风险,回避手动配置错误以缩短停机时间、提高基础设施可靠性。
第四,基础设施即代码使DevOps团队能够在开发周期早期,立足与生产场景相似/相同的环境测试应用程序。
第五,稳定且可扩展的环境。IaC能够快速、规模化提供稳定环境。在消除手动配置需求之后,团队能够以代码形式表达所需的环境状态,由此强制实现一致性。IaC类基础设施拥有可重复的部署流程,并可防止由配置漂移或缺少依赖项而引发的各类运行时问题。DevOps团队可以使用一组统一的实践与工具开展协同工作,以快速、可靠且规模化的方式交付应用程序以及配套的支持基础设施。
第六,可溯源性。我们可以像处理任何源代码文件一样对IaC配置文件进行版本控制,因此完全可以跟踪每套配置方案中的每一项具体变更。
第七,配置一致性。IaC实现了基础设施配置的全面标准化,由此降低发生错误或偏差的可能性。这不仅能够减少基础设施中出现的兼容性问题,同时也将帮助应用程序获得更顺畅的运行效果。
第八,翔实的文档。IaC不仅能够实现流程自动化,同时也可作为一种翔实的文档形式,确保每一位新晋员工都能快速掌握基础设施的实例化及保障方法。由于代码内容可进行版本控制,因此IaC允许我们整理、记录并跟踪针对服务器配置的每一项变更,而且各套配置也如代码一样可以接受测试。
最后,IaC增强了安全性。如果所有计算、存储及网络服务都以代码形式进行配置,则可保证全部服务每次都能拥有完全相同的部署方式。换句话说,我们可以在整个企业之内轻松统一地部署安全标准,无需相关管理员逐一审查并批准各项变更。
基础设施即代码相关工具
目前,市面上有众多工具可以帮助我们实现基础设施自动化,下面来看其中几款最受欢迎、最为成功的工具选项:
Terraform——Terraform是一款声明式配置及基础设施编排工具,可帮助工程师自动配置企业内的各类云与本地基础设施元素。
Chef——Chef是目前持续集成与交付流程中最具人气的配置管理工具之一。Chef具有明确的云中立性,并与亚马逊云科技、微软Azure、Google Cloud Platform以及OpenStack等多家云服务供应商合作。
Puppet——Puppet是另外一款流行的配置管理工具,可帮助工程师实现软件的持续交付。使用Puppet,开发者可以定义所需的基础设施最终状态与希望实现的运作方式。接下来,Puppet会自动强制执行所需状态并修复一切不正确变更。Puppet目前与多家领先云服务商(包括亚马逊云科技、微软Azure、Google Cloud及VMware)相集成,允许跨多云环境实现全面自动化。
Ansible——Ansible是由Red Hat开发的基础设施自动化工具。Ansible能够描述各组件与系统之间的相互关联方式,借此为基础设施建模、帮助我们摆脱独立管理各系统的沉重负担。
小结
总体来看,基础设施即代码能够简化并加快企业基础设施配置流程、帮助避免错误并严格遵循政策、保持良好的环境一致性,最终为企业节约下宝贵的时间与金钱。
好文章,需要你的鼓励
后来广为人知的“云上奥运”这一说法,正是从这一刻起走上历史舞台。云计算这一概念,也随之被越来越多的人所熟知。乘云科技CEO郝凯对此深有感受,因为在2017年春节过后不久,他的公司开始成为阿里云的合作伙伴,加入了滚滚而来的云计算大潮中。同一年,郝凯带领团队也第一次参加了阿里云的“双11”活动,实现了800万元的销售业绩。
随着各行各业数字化变革的不断深入,人类社会正加速迈向智能化。作为智能世界和数字经济的坚实底座,数据中心也迎来了蓬勃发展。面