(原标题:IaC,DevOps的必要支撑)
基础设施即代码(IaC)的核心,在于以代码形式替代手动流程,高效对基础设施进行管理与配置。使用IaC,就可以创建包含基础设施规范的配置文件,极大简化配置的编辑与分发过程,同时确保每一次都能提供完全相同的稳定运营环境。通过编纂并记录配置规范,IaC还将帮助企业管理配置选项、避免一切未经记录的临时配置变更。
选择基础设施即代码部署方法,还意味着企业可以将自己的基础设施划分为多个模块化组件,而后以自动化方式灵活拼合各具体组件。IaC提供的基础设施配置自动化功能,可帮助开发者摆脱对服务器、操作系统、存储及其他基础设施组件的手动配置及管理,极大提升应用程序的开发与部署效率。
IaC的声明式与命令式实现方法
IaC的实现方法分为两种——声明式与命令式。
声明式方法意在明确定义系统的预期状态,包括需要哪些资源、各资源应具备何种属性,再由IaC工具据此做出配置。声明式方法还能为系统对象保留一份当前状态列表,显著降低基础设施的关停管理难度。与之对应,命令式方法则强调达成所需配置时执行的特定命令,再以正确的顺序依次执行这些命令。
多数IaC工具选择使用声明式方法,并自动提供必要的基础设施配置方案。如果开发者对预期状态做出修改,声明式IaC工具将自动为应用变更内容。另一方面,命令式工具则要求开发者清晰理解要如何操作并应用这些变更。
大部分IaC工具虽然同时支持这两种方法,但在具体实现上往往会倾向于其中一种。
IaC的优势
基础设施的配置工作历来是个极度耗时且成本高昂的手动流程。如今的基础设施管理已经由数据中心物理硬件转变为虚拟化、容器与云计算形式,因此操作方式也该做出对应调整。
随着云计算的发展,基础设施组件的数量不断增加,每天都有更多应用程序被发布至生产环境当中,同时要求对基础设施进行频繁启动、扩展与关闭。如果没有适当的IaC实践,大规模现代基础设施带来的管理难题势必愈发令人头痛。
IaC能够帮助企业妥善管理IT基础设施需求、提高一致性、同时降低错误数量及手动配置需求。总的来看,IaC的优势在于降低成本、提高部署速度、减少错误、提高基础设施一致性、消除配置漂移。
除了常见的服务器自动化与配置管理工具,我们还可以选择专门用于IaC的解决方案。
下面来看几种流行的方案选项:
• Chef
• Puppet
• Red Hat Ansible Automation Platform
• Saltstack
• Terraform
• AWS CloudFormation
IaC对于DevOps有何重要意义?
IaC是实施DevOps及持续集成/持续交付(CI/CD)的重要组成部分。IaC帮助开发人员分担掉大部分配置工作,确保开发者只需执行脚本即可建立起就绪待用的基础设施。如此一来,应用程序部署工作不会因基础设施搭建周期而陷入停顿,系统管理员也不必承担费心耗时的手动管理流程。
CI/CD的实现,则依赖于整个应用程序生命周期中涵盖集成、测试、交付及部署的持续自动化与持续监控机制。实现环境自动化的前提,在于环境一致化。如果开发团队以一种方式部署应用程序或配置环境,但运营团队的部署及配置方式完全不同时,应用程序的自动化部署将无从谈起。
以DevOps方法为开发及运营团队提供协调支持,能够极大改善流程中的错误、手动部署与一致性冲突等问题。IaC可保证两支团队使用完全相同的应用程序部署方式与DevOps协同策略,真正将开发与运营工作融合起来。各个环境均应使用相同的部署流程,其中包括实际生产环境。IaC则能保证每次生成的环境都完全相同。IaC还能彻底消除了无法自动复制的特定配置维护单一部署环境的情况,确保整个生产环境乃至运营体系始终保持一致。
DevOps最佳实践同样适用于IaC中的基础设施。基础设施可以使用软件开发期间的相同CI/CD管道,并对基础设施代码进行相同的测试与版本控制。
红帽助力实现自动化
在企业之内全面推行自动化方法不仅有助于提升IT流程效率,还能将自动化元素引入整个技术、团队及组织结构。
Red Hat Ansible Automation Platform 包含企业内部自动化所需要的全部工具,例如playbook、可视化仪表板及分析工具等等。以YAML编写而成的Ansible Playbooks可描述系统所需要的状态,具体状态信息通常保存在源代码控制之内。Red Hat Ansible Automation Platform则负责让系统达到所需状态,无论其当前状态如何。
Ansible Automation Platform还能让安装、升级与日常管理等操作全面实现可重复性与高可靠性。
此外,Red Hat Ansible Automation Platform还在Forrester Research评选的2020年第三季度Forrester Wave™: 基础设施自动化平台中获得“领军级”评价。在强有力的自动化解决方案的支持下,企业得以加快应用程序与服务的部署速度、提升IT基础设施管理效率,最终全面增强应用程序的开发能力。
相关新闻: