如何选择云计算基础设施自动化的最佳工具
企业需要深入了解将工作负载迁移到公共云的正确步骤,并因此降低成本。
云迁移不会自行发生,在迁移项目成功之前并不能完成工作和任务。企业将业务迁移到云平台的最大好处之一是可以降低工作和运营成本,其中一个最重要的因素是云计算基础设施的自动化和配置。通过基于云计算基础设施的配置、设置和管理实现自动化,组织可以腾出时间和资源来进行关键任务创新,而不是日常维护。
幸运的是,有许多云计算基础设施自动化工具可用于帮助加快流程。此外,许多相关工具也可能有所帮助。虽然没有一种工具适合所有情况,但这个指南可以为考虑所提供的各种优势提供帮助,并选择最能满足企业的云计算基础设施需求的优势,无论企业的迁移是针对公共云、私有云还是混合云架构。
(1)AWS CloudFormation
为了帮助确保其在所有云计算领域的领导地位,亚马逊公司的AWS CloudFormation允许用户使用YAML或JSON对资源进行建模,对它们实现自动化,然后将它们部署在基于AWS的基于云计算的基础设施中。
如果企业使用或计划使用基于AWS的云计算产品,CloudFormation可以帮助用户确保所有团队的配置尽可能简单。
CloudFormation允许用户立即运行大量其他AWS工具,包括Amazon CloudWatch和AWS Elastic Beanstalk。CloudFormation还可以处理跨区域账户的自动化管理,从而可以在业务扩展时更轻松地扩展到新的区域设置。CloudFormation Change Sets是在基础设施发生之前预览即将发生的更改的好方法。
如果用户计划使用AWS云,可以采用CloudFormation尽可能多地完成任务。
(2)Puppet
作为配置自动化市场的长期领导者,Puppet帮助当今一些最大的软件团队建模、配置和系统地实施其基础设施的所需配置。借助该公司的商业产品Puppet Enterprise,用户可以以惊人的规模管理基于云计算基础设施的各个方面,从计算到存储再到网络资源(对于基本部署,可以考虑超过20,000个节点)。它适用于公共云、私有云和混合云。用户使用Puppet的特定于域的语言(DSL)编写模块,这些语言为用户在每个节点上安装的代理程序强制执行的配置提供代码。
使用Puppet Enterprise,用户可以获得开箱即用的编排和基于任务的命令执行和多设备管理。其GUI控制台可以轻松地对用户部署的所有云计算进行分类和管理。虽然Puppet DSL以花费一段时间来学习而闻名,但收益可能很大。
Puppet公司与微软、VMware,、谷歌和亚马逊等主要厂商保持着整合和合作关系。例如,针对Puppet Enterprise的AWS Opswork提供了一套完全集成的自动化工具套件,用于管理基于云计算的基础设施。
如果用户需要标记强制配置和漂移补救,Puppet是其良好的自动化工具。
(3)Ansible
最近受到RedHat的保护,Ansible正迅速成为基于其易于使用,基于任务的基础设施自动化的行业标准。Ansible公司声称,用户不需要具有计算机科学的深厚背景就可以采用简单的语言自动化、配置或编排任务,用户可以将其打包在"剧本"中。此外,用户可以轻松管理云计算基础架构的所有方面,而无需在云计算基础设施中的任何位置安装单个代理。
Ansible Tower的主要功能(Ansible的商业产品)包括作业调度、基于GUI的库存管理、多个游戏工作流程,以及灵活的REST API,可让用户在几乎任何基于任务的配置管理过程中嵌入Ansible Tower。
主要集成包括AWS、Microsoft Azure、VMware、Rackspace、Digital Ocean和谷歌云。
使用Ansible的任务执行自动化配置可能会让用户的工作感觉有点过于简单。
(4)Chef
Chef公司是基础设施配置领域中的另一家资深厂商。与Puppet一样,Chef公司提供自己的DSL来帮助用户实施从配置策略到持续交付生产代码的所有内容。对于Chef Automate用户(Chef的商业平台),可以每小时自动管理基于AWS的自托管基础设施,或使用AWS Opswork实施Chef Automate。
借助Chef Automate,用户可以获得详细的合规性管理、高可用性和基于GUI的工作流程管道创建等关键功能。主要集成包括AWS、Microsoft Azure、VMware、谷歌云。
如果用户需要合规管理,Chef是一个不错的选择。
(5)Kubernetes
Kubernetes最初由谷歌公司开发,是一个容器编排平台,用于自动化容器化应用程序的部署、扩展和管理。事实上,它已成为容器编排的事实标准,并且是云原生计算基金会的旗舰项目,由谷歌、AWS、微软、IBM,英特尔、思科和RedHat等主要厂商提供支持。
虽然它不是一个真正的基础设施配置管理工具,但Kubernetes可以轻松部署和运行基于微服务架构的应用程序,几乎适用于任何云。它通过在一组主机之上创建一个抽象层来实现这一点,开发团队可以部署他们的应用程序,让Kubernetes管理诸如控制应用程序或团队的资源消耗,在主机基础设施中均匀分布应用程序负载以及自动加载平衡请求之类的事情。
考虑采用容器和微服务架构?许多人怀疑Kubernetes有朝一日会使传统的配置管理工具完全过时。
(6)Terraform
基础设施管理的另一个方面是"基础设施即代码"的概念。AWS、微软、谷歌公司这三个行业巨头都声称这是一个中心哲学,Terraform也不例外。简而言之,Terraform是一个开源工具,用户可以使用它来编写声明性配置文件来创建和修改基础设施,但它并不完全是配置自动化工具。
如果用户在基于云计算的工作流(例如AWS)中使用企业的商业产品Terraform Enterprise,那么用户将编写版本控制配置的模块、声明创建或修改高级资源,例如Amazon EC2实例或Amazon Relational Database Service(RDS)资源。Terraform可以借助广泛的资源图形和执行计划帮助用户自动配置这些资源。但是用户仍然可能需要像Puppet或Chef这样的配置管理工具来帮助其在这些资源上自动设置和执行软件。
Terraform的主要集成包括AWS、谷歌云平台,Microsoft Azure云平台和Oracle云。
Terraform非常重视"基础设施即代码"。用户会得到所期望的强大而稳定的声明性配置。
(7)谷歌云计算部署管理器(Google Cloud Deployment Manager)
如果用户计划使用谷歌云平台构建云计算基础设施,请采用云计算部署管理器。在这里,用户可以使用并行、可重复的部署和模板驱动的配置自动配置和部署谷歌云。云计算部署管理器提供了一系列丰富的工具,从CLI和API到GUI,用于管理基础设施配置和管理的所有阶段,从资源创建到删除。
(8)Microsoft AzureAutomation
Azure Automation提供基于云计算的自动化和配置服务,可在Azure和非Azure环境中提供一致的管理。它由流程自动化、更新管理和配置功能组成,旨在帮助用户减少错误,并减少基础设施部署所花费的时间。Azure Automation还提供对维护和合规性运行的自动控制。
最重要的是,它不仅仅适用于微软使用Azure自动化,用户可以使用通过PowerShell或Python Runbook触发的自动化为Windows或Linux主机进行异构部署。
微软公司显然表现出对现代DevOps从业者的奉献精神。如果用户需要运行各种操作系统,Azure可能是一种很好的方式。
(9)思科智能自动化云平台(Cisco Intelligent Automation for Cloud)
思科公司提供了许多从私有到公共到混合解决方案的云计算产品。除了这些产品外,思科智能自动化云平台还提供从基础设施即服务(IaaS)到在思科云或其他云环境(包括AWS、OpenStack和VMware)中运行的实例的实际配置和管理。
主要功能包括为用户的云计算用户、多租户和网络服务自动化提供的自助服务门户。尽管思科公司明确创建自己的云计算基础架构产品,但思科智能云计算自动化平台能够将自动化工具扩展到其他生态系统中。
(10)SaltStack
最初是像Puppet和Chef这样的开源项目,Saltstack也加入了企业领域,主要关注自动化安全合规性。与Ansible一样,SaltStack可以无代理运行(但如果用户的工作流需要,也可以运行代理)。
如果用户有兴趣迁移到云平台,SaltStack提供了一个与云计算提供商进行交互的界面,称为Salt Cloud,因此用户可以使用Salt来配置和管理基于云计算基础设施的所有方面。
SaltStack的主要功能包括无代理节点管理和卓越的安全合规性工具。它还与AWS、Microsoft Azure、VMware、Rackspace、Digital Ocean、OpenStack和谷歌云进行了重要的云集成。
如今,安全合规似乎是一个巨大的问题,所以如果这是一个问题,也许SaltStack是用户想要的方式。
(11)VMware vCenter配置管理器(VCM)
VMware世界的这一小部分可帮助用户配置和维护VMware云环境(在AWS和RackSpace等供应商上运行),以满足其运营、安全和合规性要求。
VCM为用户提供了一个控制基于VMware的基础设施配置的中心位置,无论它是在Windows、Linux还是Unix操作系统上运行。企业还可以轻松选择VMware集成,这有助于使用许多VMware工具(包括vCenter、vCloud Director和VMware vCloud Networking)跟踪配置数据,更改数据,网络配置和合规性策略。
(12)Cfengine
CFEngine是一种经典的配置管理工具,长期以来一直用于在各种规模的企业中实现IT基础设施的自动化。与Puppet等需要中央管理服务器的工具不同,CFEngine依赖于每五分钟运行一次的"自治代理"来强制执行其主机配置。令人印象深刻的是,CFEngine允许用户为每个管理服务器管理多达5,000个主机。
CFEngine与用户的Amazon EC2基础架构集成。
(13)Foreman
如果用户需要一个轻量级工具来管理服务器的整个生命周期,从裸机到配置再到业务流程,开源Foreman项目可以提供帮助。但请注意,Foreman依赖于与开源Puppet的相当深度的集成来进行节点的配置管理,但它还为Chef、Ansible和Salt提供插件支持以用于其他管理方面。
其专门的开源社区拥有广泛的插件库。用户可以在主要提供商(如Amazon EC2、Google Cloud Computing、OpenStack和VMware)上使用Foreman配置云计算实例。
Foreman绝对是构建开源软件团队的选择之一。
结论
每个基础设施自动化工具都有其优势、劣势和学习曲线。在选择工具时,用户需要找到最符合项目需求和团队需求的工具。当用户开始云迁移时,云计算供应商构建的工具可能是提供最简单的方法,尤其是如果用户正在寻找"一站式服务"的时候。
也就是说,像Puppet、Chef和Ansible这样的工具已经为DevOps从业者在各种云环境中管理基础设施建立了巨大的声誉,他们的集成证明了这一点。但一定要做好功课,因为一些相关的工具可能正是用户所需要的。实际上,在许多情况下,用户可能会发现最好的方法是将两个或更多这些工具组合在一起。