内容简介:【51CTO.com快译】自从十多年前被创建以来,基础架构即代码(Infrastructure-as-Code,IaC)一直在改变着各个企业IT架构的设置与管理方式。过去对于IT人员而言,构建新的基础架构,就意味着在某个功能强大的数据中心内部,堆叠各种物理服务器、配置不同的网络线缆、以及添置各类硬件设备。如今单靠软件配置,我们就可以创建出更高性能、更具成本效益、且更安全的基础架构了。此外,相对于过去需要几天才能跑完的传统变更管理流程,如今企业可以通过采用一致性的变更与配置流程,帮助其团队在几分钟之内,就能推
【51CTO.com快译】自从十多年前被创建以来,基础架构即代码(Infrastructure-as-Code,IaC)一直在改变着各个企业IT架构的设置与管理方式。过去对于IT人员而言,构建新的基础架构,就意味着在某个功能强大的数据中心内部,堆叠各种物理服务器、配置不同的网络线缆、以及添置各类硬件设备。
如今单靠软件配置,我们就可以创建出更高性能、更具成本效益、且更安全的基础架构了。此外,相对于过去需要几天才能跑完的传统变更管理流程,如今企业可以通过采用一致性的变更与配置流程,帮助其团队在几分钟之内,就能推出通过充分验证的、且无人值守的全新流程。
如今,IaC能够从源代码、而不是从手工配置的角度,为开发人员提供丰富的云端服务、以及IT基础架构的相关工具。在IaC中,我们可以将服务器、网络和数据库等云端元素视为不同的软件资源,进而实现完全自动化的配置。
有了这种将基础架构视为软件与数据的处理方式,企业开发团队便可以进行一系列的DevOps与敏捷(Agile)实践,并在技术价值流(technology value stream)中推动快速且高质量的工作流程。其中,我们可以参考和利用的最佳实践包括:持续集成(CI)、持续交付(CD)和测试驱动开发(test-driven development,TDD)等。与此同时,企业也可以通过优化部署编排(orchestration)、自动化测试库、以及使用版本控制系统(version control systems,VCS),来增强其现有系统的统一性和容错能力。
可见,在不断的实践与快速发展中,IaC通过各种自动化工具,让企业的各种业务流程与关键环境更加容易实现与落地。下面,让我们细数七种能够提供此类自动化 工具 的云端平台吧。
该集成式的AWS服务是专为那些在AWS云中工作的用户而设计的。凭借着在云端环境中的市场占有率,AWS CloudFormation有着超过350,000名开发用户。目前,它已经成功配置了342种AWS资源类型。
CloudFormation允许用户方便地在JSON(请参见https://s3-us-west-2.amazonaws.com/cloudformation-templates-us-west-2/WordPress_Single_Instance.template)或YAML(请参见https://s3-us-west-2.amazonaws.com/cloudformation-templates-us-west-2/WordPress_Single_Instance.yaml)模板文件中,通过它所提供的各种模板,来构建不同复杂程度的安全基础架构模型。与此同时,该服务也能通过自动化的功能,以可重复、可管理的方式帮助用户部署手头上的各种资源。而且,您只需要对所使用的资源,而不是服务本身支付费用。因此,您只需要根据自己的应用规范,配置相应的模板,CloudFormation就能为您处理其余的任务。
AWS CloudFormation的参考文档链接为: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/GettingStarted.Walkthrough.html 。
作为竞品,Microsoft为用户提供的IaC工具是:Azure Resource Manager。用户可以通过Azure Resource Manager(ARM)的不同模板,在无缝的周期内,配置出自己的基础架构、并处理各种依赖项。您既可以在模板中使用那些已在JSON中声明描述了的资源,也可以在同一个ARM模板中声明多个Azure资源,以构建整体性的项目环境。
由于ARM模板具有幂等性(idempotent),因此您可以无限次数地重复使用相同的模板,并获得相同的结果。同时,您也可以使用VSTS(译者注:Visual Studio Team System,Microsoft开发的一套生命周期开发工具)仪表板,以可视化的方式监控所有的构建与发布,并快速地了解到云端环境的整体运行状况与模板质量。此外,Resource Manager还支持服务器的实例分组、以及对不同分组的统一管理。
Azure Resource Manager的参考文档链接为:https://docs.microsoft.com/en-us/azure/azure-resource-manager/。
3. Google Cloud Deployment Manager
顾名思义,Google Cloud Deployment Manager(CDM)是基于Google云平台的配置文件(YAML)和模板(JINJA2或PYTHON)的一种自动化执行工具。它允许用户自行定义和同步部署各种系统资源。在其Beta和Alpha版的特征中,用户还可以使用到自动扩展与负载均衡等功能,来编写所有的部署脚本。
同时,Google CDM也支持预览功能。这意味着:您在不直接提交更改的情况下,便可以直接了解到部署和变更所带来的影响。该功能不仅可以帮助用户避免出现人为的错误,而且能够起到加强与稳定整体基础架构的作用。
GCDM的参考文档链接为: https://cloud.google.com/deployment-manager/ 。
4. Terraform
上述三种IaC工具都是为特定的云环境所设计的,而Terraform并非如此。它不仅是幂等的,而且是多种云端环境中的“瑞士军刀”。由HashiCorp开发的(该公司同样开发出了Vault和Nomad)Terraform独立于任何云端平台。它能够帮助用户轻松地处理,那些具有复杂分布式应用的大型基础架构。
凭借着其灵活性,Terraform的自动化具有多种表现形式,并且主要服务于核心规划与应用周期。一些团队虽然选择了在本地运行Terraform,但是他们会使用各种包装脚本(wrapper scripts)为Terraform的运行设置一致性的工作目录。而其他的开发团队,则可能会在诸如Jenkins之类的备用编排工具中,去运行Terraform。
与Google CDM类似,Terraform也支持对于变更和配置的预览。同时,用户还能够是用它来复制各种现有的部署、以及单个服务器的实例。此外,Terraform还深化了其版本控制和远程状态管理服务,能够为远程团队的协作,提供集中式的真实信息来源。
Terraform的参考文档链接为: https://learn.hashicorp.com/terraform/ 。
5. Chef
Chef是一款备受CI/CD人员欢迎的IaC工具。它的优势在于使用了基于 Ruby 的领域特定语言(Domain Specific Language,DSL)。它可以通过特有的Cookbook式版本控制,来维持用户配置的一致性,从而保证了基础架构能够跟上,其托管应用的快速增长。
Chef通过在其核心配置中封装了各种模板与模板集合,以满足用户的开箱即用需求。其中,一个Cookbook(一种模板)仅对应一种任务。它能够基于所涉及到的资源,提供不同的服务器配置。例如,某个带有数据库的Web应用程序可以拥有两个recipes(另一种模板),它们共同实现存储任务。由于支持那些为云平台专配的API,因此Chef还能够很好地与其他IaC工具(包括Terraform、以及其他多种云端环境)配合使用。
Chef的参考文档链接为: https://docs.chef.io/quick_start.html 。
6. Ansible
Chef虽然是大多数人的首选,但是对于Red Hat环境中的用户而言,他们更喜欢使用Ansible。以自动化为设计初衷的Ansible,专注于提供极其简化的配置语言,以及在无需修改的情况下管理各种云端实例。不仅限于特定的配置管理,Ansible也能很好地执行诸如零宕机(非中断)滚动式更新、以及热补丁(hotfixes)之类的任意IT编排。您不必像过去那样,将系统作为某系孤立的单元进行管理,而只需要清楚地描述出组件与系统之间的相互关系,Ansible便可帮您打理其余的部分。
作为一款灵活的IaC工具,您不仅可以使用由Ansible提供的既有功能,还能够通过开发属于自己的模块和规则,来满足各种特定的需求。当然,Ansible也能够提供友好的GUI设置和监控功能。
Ansible的参考文档链接为: https://www.ansible.com/resources/get-started 。
7. Puppet
Puppet采用了更为全面的IaC设置和自动化方法。目前,它正在通过各种先进的接口技术,为Reddit、Dell和Google等大型公司的数据中心、以及各种操作系统的运行提供支持。作为一款老牌的工具,Puppet使用基于Ruby的DSL,来定义基础架构最终状态。Puppet通过监控基础架构,来判断是否出现了偏离既定状态的变更,进而自动予以修正。另外,由于拥有大量的企业用户和社区支持,因此它非常适合于系统管理人员来进行功能性的开发。
总结
综上所述,您需要根据自己的个人偏好和特定需求,来选择合适的自动化IaC工具。此外,由于您势必会需要花费一定的时间去定义相关的内容,因此您在选择时也需要考虑到自己团队所使用的编程语言、团队之间的沟通、以及云端环境的一致性等问题。如果您有兴趣深入阅读的话,请参考《IaC的安全挑战以及克服方法》(https://www.ibexlabs.com/security-challenges-with-iac/)一文。
原文标题:The Top 7 Infrastructure-As-Code Tools For Automation,作者:Narendar Nallamala
【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】
【责任编辑:庞桂玉 TEL:(010)68476606】
以上所述就是小编给大家介绍的《七种自动化的基础架构即代码工具》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- SELENIUM 的自动化测试架构
- 『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(上)(五)
- 『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(下)(六)
- 架构设计:服务自动化部署和管理流程
- 微服务架构自动化测试全链路设计
- 自动化基础架构中的系统测试
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。