内容简介:【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自动化部署流程(下)(六)
- 架构设计:服务自动化部署和管理流程
- 微服务架构自动化测试全链路设计
- 自动化基础架构中的系统测试
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Programming Amazon Web Services
James Murty / O'Reilly Media / 2008-3-25 / USD 49.99
Building on the success of its storefront and fulfillment services, Amazon now allows businesses to "rent" computing power, data storage and bandwidth on its vast network platform. This book demonstra......一起来看看 《Programming Amazon Web Services》 这本书的介绍吧!
图片转BASE64编码
在线图片转Base64编码工具
Markdown 在线编辑器
Markdown 在线编辑器