博客
Terraform与Cloudformation:基础架构如代码对决

Terraform与Cloudformation:基础架构如代码对决

抽象形状抽象形状
加入27,000多个网络安全通讯订阅者

当我们谈到DevOps和持续交付/集成(CI / CD)工具链时,我们指的是工具的超集(许多功能重叠),以帮助组织达到更快,更安全的部署速度。它涵盖了广泛的解决方案:供应工具,编排工具,测试框架,配置管理(CM)和自动化平台,等等。 CM产品之间的比较通常会抢占展示空间(例如, 人偶与厨师),但在这种情况下,我们将比较两种用于编配基础架构的编排和管理工具:Terraform和CloudFormation。

如果对您而言,DevOps和CI / CD工具链的复杂性是一个障碍,请放心,不要责怪您。通常将具有竞争功能的解决方案一起部署,以弥补彼此的缺点,并且在许多情况下,这些工具的既定优势是重叠的。至少在这种情况下,以下内容可能有助于澄清问题。

CM工具主要处理已经创建的机器,从而简化/自动化软件和服务的安装和管理。诸如Terraform和CloudFormation之类的解决方案不是CM工具,而是将整个基础架构和数据中心编成高级抽象,以便于复制和管理,这通常是完全实现DevOps管道的起点。这些解决方案构建了支持服务器实例的基础架构要素,而实际的CM工具(无论是Puppet还是Chef)都管理着实际部署的细节:配置,应用程序细节,依赖关系等。

Hashicorp的Terraform

Hashicorp开发了Vagrant,Atlas和Packer等流行工具之后,便着手建立一套解决方案,以统一整个数据中心的创建。 Terraform是这些工作的最终成果,使开发人员和操作人员能够构建,组合和启动从汤到干的基础架构

如果您熟悉基础架构即代码,Terraform的价值将立即显现:该工具可将基础架构配置抽象为可归档的,版本控制的代码。因此,尽管Puppet和Chef可以自动执行节点(服务器,应用程序等)的配置,但Terraform可以处理自动化工具有效完成其工作所需的所有基础架构资源和服务的设置。

Terraform使用其自己的称为Hashicorp配置语言(HCL)的特定于域的语言(DSL):一种完全兼容JSON的语言,用于将基础结构描述为代码。使用HCL创建的配置文件描述了构建基础结构所需的组件,可以将其检入源代码控制中,以及用于创建GitHub拉取请求并作为可执行文档运行。反过来,这也为其他CM和自动化工具(如Puppet和Chef)奠定了基础,以便在基础架构环境中部署系统。因此,在假设的Terraform和Puppet设置中,Terraform的供应商调用Puppet在基于HCL的配置运行期间创建服务器资源。

Amazon CloudFormation

与Terraform一样,Amazon CloudFormation为开发人员和运营商提供了轻松,自动地配置基础架构资源的工具。这些资源作为堆栈进行管理,并在称为模板的JSON配置文件中进行编码。通过在这些模板中将基础结构描述为代码, 亚马逊AWS 客户在其基础架构部署中享受可预测性和可重复使用性:在一个地方轻松进行更改,而CloudFormation负责创建,更新和删除 AWS 堆栈中描述的资源。

CloudFormation可以实现基础架构即代码的所有预期优势。因为模板和堆栈是人类可读的并用作可执行文档,所以该解决方案通过自动化和基础架构配置的整合,可显着提高运营效率并减少错误。由于CloudFormation以版本可控的,可测试的基础架构代码捕获配置详细信息,因此可以轻松地将CloudFormation集成到组织的现有CI / CD管道中。

并排:Terraform和CloudFormation

您可能再次想知道:如果Puppet和Chef之类的工具也可以按代码进行基础结构构建,为什么需要Terraform和CloudFormation?尽管自动化和CM工具可以管理大多数基础结构和与系统相关的配置,但它们通常假定某些裸机组件和服务已经存在。这些数据中心级项目的抽象最适合于Terraform和CloudFormation之类的工具。另外,这两个本质上不是CM工具,而是构建了诸如Chef和Puppet之类的工具的基础组件来完成其工作。

Terraform在其网站上很好地总结了这一点:

“配置管理工具在已经存在的计算机上安装和管理软件。 Terraform不是配置管理工具,它允许现有工具专注于自身的优势:引导和初始化资源。”

CloudFormation也是如此。它通过模板(作为堆栈进行管理)创建了所有必要的基础基础结构组件和服务,以实现规范,然后启动任何CM /自动化工具来处理应用程序级配置。因此,例如,在准备好与数据中心和其他与基础架构相关的抽象相关的服务之后,CloudFormation会启动Puppet或Chef来提供必要的软件层组件,并通过Chef Recipes或Puppet Manifests提供进一步的自定义。

现在,关于Terraform和CloudFormation的比较:

多云整合

CloudFormation特定于AWS云资源,而Terraform支持所有云供应商。因此,如果您的环境包含多云部署(例如Microsoft AWS 或Google Cloud),则CloudFormation不适合您。就是说,某些Amazon AWS 资源无法由Terraform进行管理,因此,如果您使用的是EC2服务器实例和S3存储之类的AWS资源,则最好坚持使用CloudFormation。称其为“供应商最了解” —就是这样。

*注意:Terraform 0.6.16现在完全支持Amazon AWS ,具有与AWS CloudFormation相同的创建/更新/版本控制功能。查看 AWS ' writeup 使用Terraform管理AWS云资源的信息。 

基础架构生命周期管理

CloudFormation中缺少几个非常有用的Terraform功能,包括用于部署的计划和执行阶段的单独工具。由于Terraform的规划阶段工具显示了将创建,修改和终止的资源,因此无需进行基础架构更改即可进行猜测。 Terraform图形之类的可视化为开发人员和操作员提供了一种轻松的方法来理解依存顺序。这允许在CloudFormation中缺少一定级别的部署验证。

产品成熟度和支持

Terraform的版本为0.6.3,这使其在黄金时间还没有准备就绪。另一方面,CloudFormation是由Amazon管理的稳定且成熟的工具-多年来已用于关键任务企业基础架构中。也就是说,我们很高兴看到Hashicorp(由Vagrant,Packer和Consul组成)在将来的发行版中为Terraform带来了成功。

简而言之,以Amazon AWS 为中心的云基础设施将从CloudFormation中受益最多,而那些寻求多云支持的人将选择Terraform。使用诸如CloudFormation这样的可靠解决方案,企业可能会更放心,但是对于那些希望避免供应商锁定的企业来说,Terraform提供了必要的开放式集成功能。

无论您使用哪种架构流程和管理工具,都必须使用适当的验证机制来确保您的环境(从裸机到应用程序堆栈)免受质量缺陷和配置错误的影响。结合CM /自动化工具,这些解决方案可以轻松经受住据称与生产相同的开发环境,但没有提供进一步验证的独立机制。为此,ScriptRock可以验证您的整个基础结构生命周期没有漏洞和安全漏洞,并且配置是否符合预期。

自由

白色UpGuard徽标
可供下载的UpGuard免费资源
学到更多

下载我们的免费电子书和白皮书

关于网络安全和供应商风险管理的见解。
白色UpGuard徽标
电子书,报告& Whitepapers
可供下载的UpGuard免费资源
UpGuard客户支持团队UpGuard客户支持团队UpGuard客户支持团队

观看UpGuard的实际应用

与我们的一位网络安全专家预订免费的个性化入职电话。
抽象形状抽象形状

相关文章

了解有关网络安全的最新问题的更多信息。
传送图标

注册我们的时事通讯

每周在收件箱中获取最新精选的网络安全新闻,漏洞,事件和更新。
抽象形状抽象形状
免费即时安全评分

您的组织有多安全?

索取免费的网络安全报告,以发现您的网站,电子邮件,网络和品牌上的主要风险。
  • 检查图标
    您可以立即采取行动的即时见解
  • 检查图标
    13个风险因素,包括电子邮件安全,SSL,DNS运行状况,开放端口和常见漏洞
网站安全扫描结果网站安全扫描等级抽象形状