七种自动化的基础架构即代码工具

栏目: Ruby · 发布时间: 5年前

内容简介:【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通过各种自动化工具,让企业的各种业务流程与关键环境更加容易实现与落地。下面,让我们细数七种能够提供此类自动化 工具 的云端平台吧。

七种自动化的基础架构即代码工具

1. AWS CloudFormation

该集成式的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

七种自动化的基础架构即代码工具

2. Azure Resource Manager

作为竞品,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通过监控基础架构,来判断是否出现了偏离既定状态的变更,进而自动予以修正。另外,由于拥有大量的企业用户和社区支持,因此它非常适合于系统管理人员来进行功能性的开发。

Puppet的参考文档链接为: https://learn.puppet.com/?_ga=2.121922253.792795342.1550743099-1090453039.1547698716&_gac=1.146748870.1549008273.Cj0KCQiA-c_iBRChARIsAGCOpB1vRaPt-ltx4_GiXxqHX7AaW5SnqQs9U6wzndUPPqoxrRg-AjhSgJUaAqVGEALw_wcB

总结

综上所述,您需要根据自己的个人偏好和特定需求,来选择合适的自动化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】


以上所述就是小编给大家介绍的《七种自动化的基础架构即代码工具》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

用户体验的要素

用户体验的要素

Jesse James Garrett / 范晓燕 / 机械工业出版社 / 2007年10月 / 25.00

这不是一本关于“怎样做(How-to)”的书。有很多很多讨论如何建设网站的书,这本不是。 这不是一本关于技术的书。在这里你找不到一行代码。 这不是一本有答案的书。相反,这本书说的是“如何提出正确的问题”。 这本书将告诉你,在你阅读其他书籍的之前,你需要提前了解什么。如果你需要一个大的概念,如果你需要了解用户体验设计师所做出的决策的环境,这本书很适合你。 这本书经过精心设计,......一起来看看 《用户体验的要素》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

html转js在线工具
html转js在线工具

html转js在线工具