Terraform vs Pulumi在2022选用那个

举报
kaliarch 发表于 2022/10/15 14:13:55 2022/10/15
【摘要】 传统上,提供基础设施意味着由现场工程师、系统管理员、存储管理员、备份管理员和应用程序团队组成的团队将提供和维护一个现场数据中心。尽管该系统可以工作,但它有一些缺陷–部署速度慢、安装和维护成本高、自动化程度低、人为错误、不一致性以及非高峰期资源利用率低。相反,大型科技公司已经开始开发完全管理的基于云的基础设施,使得只需点击几下就可以完全提供组织的基础设施。虽然这极大地减轻了现场系统的压力,但该...

传统上,提供基础设施意味着由现场工程师、系统管理员、存储管理员、备份管理员和应用程序团队组成的团队将提供和维护一个现场数据中心。尽管该系统可以工作,但它有一些缺陷–部署速度慢、安装和维护成本高、自动化程度低、人为错误、不一致性以及非高峰期资源利用率低。

相反,大型科技公司已经开始开发完全管理的基于云的基础设施,使得只需点击几下就可以完全提供组织的基础设施。虽然这极大地减轻了现场系统的压力,但该解决方案仍然缺乏有助于消除人为错误和提高速度的急需的一致性。解决这个问题的尝试导致了今天使用基础结构作为代码(IaC)的方法。
作为代码的基础设施是一种现代设计,它有助于在云中而不是在内部数据中心中提供、定制和管理组织的数据中心。使用高级和简单的人类可读的代码,您可以轻松地在AWS中创建EC2实例。
尽管市场上有几种IaC解决方案,但本文将重点比较其中的两种:

Terraform,一个受欢迎的旧工具,有大量的平台支持和文档
Pulumi,一个更新的、快速发展的、对开发人员友好的工具

Terraform和Pulumi的高层比较

Terraform和Pulumi是两个伟大的解决方案,旨在使用不同的方法解决类似的问题。开发人员是否会选择使用其中一个而不是另一个,这在很大程度上取决于组织和开发人员的背景。
那些有管理背景的人倾向于Terraform,而那些有开发背景的人通常更喜欢用相同的语言编写,并使用Pulumi。对于有时间和资源投资学习特定领域语言(DSL)的组织和开发人员来说,Terraform是一个明智的选择。那些喜欢在更熟悉的语言堆栈中提供基础设施的人倾向于选择Pulumi。
Terraform是目前IAC的行业领导者。它成熟而稳定,而且尽管您必须学习DSL(即HashiCorp配置语言(HCL)),Terraform拥有一个健壮和成熟的社区。如果您需要学习HCL,社区有足够的信息支持您,并使学习曲线更容易导航。
Pulumi的优势在于,作为一名开发人员,您不需要学习新的编程语言就可以使用它。您可以实现用遗留语言编写代码的所有命令式方法。Pulumi为类、控制流、测试脚本和代码块等方法提供了功能,使您处于控制之中。用您最喜欢的语言编写代码,仍然可以实现使用Terraform可以完成的所有功能。

前面的图像比较了使用Terraform和Pulumi创建AWS S3 bucket实例的简单代码片段。在左侧,文件名的扩展名为。tf,用于TerraForm。如前所述,为了提供和管理您的基础结构,您需要学习HashiCorp的配置语言(HCL)。尽管声明性的HCL设置简单,但它有一个陡峭的学习曲线。
右边的代码是用Python编写的Pulumi代码。您可以看到扩展名是。py。有了Pulumi,就不需要学习新的编程语言了。Pulumi对一些主要语言如Python、JavaScript、TypesScript、Go和C#的支持意味着您可以立即开始提供基础设施。
让我们深入研究Terraform和Pulumi,了解它们各自发光的情况。

Terraform

Terraform是一个现代开源IaC工具,用于提供和维护云基础设施。它的DSL,HCL,是一种声明性语言,这本质上意味着您可以告诉Terraform要做什么,它将执行它。这种类型的语言避免创建代码块、控制流和类。由于这种简单性,很容易启动和创建您的第一个基础结构。
Terraform支持市场上所有主要的云基础设施,为每个供应商提供详细且易于使用的文档。它与几乎所有的操作系统(Windows、Linux和macOS)都兼容,其强大的文档捕捉到了如何从所有提供商配置资源的详细信息。虽然Pulumi也拥有良好的文档,但Terraform的更优越。
Terraform自2014年以来一直存在,此后获得稳定并持续增长。与Pulumi一样,Terraform支持所有主要云平台中的供应。但是,如前所述,Terraform的主要缺点是您必须学习HCL。

Pulumi

像Terraform一样,Pulumi是一个开源的现代IaC工具,用于配置、部署和维护云基础设施上的资源。它还支持所有主要的云提供商,但与Terraform不同,Pulumi允许您用本地编程语言编写基础设施。
为了说明在Pulumi中提供资源是多么简单,请考虑以下来自Python文件的代码片段。
来自__main__.py:

import pulumi
from pulumi_aws import s3

# Create an AWS resource (S3 Bucket)
bucket = s3.Bucket('my-bucket')

# Export the name of the bucket
pulumi.export('bucket_name', bucket.id)

让我们分解该代码的各个组件:

  • 第一条线进口普鲁米。
  • 第二行从Pulumi的AWS提供程序Pulumi_AWS导入S3。
  • 第三行是实例化S3 bucket,并将其保存在名为bucket的变量中。
  • 最后一行代码导出bucket。

简单地说,您可以像使用其他Python包一样使用Pulumi–您可以构建代码块、编写控制流、创建类以及使用通用语言所做的一切,因为这是必须的。它是以开发人员的兴趣为中心建立的,这是它发展如此迅速的一个巨大原因。
Pulumi和Terraform都有其管理国家的方式。虽然Pulumi利用了任何通用语言和Pulumi服务,Terraform引擎处理自己的状态管理。
比较这两种解决方案,Pulumi走在前面。虽然这两种工具都能有效地为开发人员提供一致的IaC配置方式,但开发人员通常更喜欢一种允许他们用他们已经知道和使用的语言编写代码的工具。Pulumi还通过提供一种方法来帮助开发人员通过TF2Pulumi将他们的HCL代码转换为Pulumi来升级其游戏。
然而,尽管Pulumi雄心勃勃,Terraform并没有真正睡觉。HashiCorp推出了Terraform CDK,这是他们的云开发工具包,允许开发人员使用熟悉的编程语言定义云基础设施提供。

结论

在本文中,您了解了作为代码的基础设施,以及Pulumi和Terraform作为行业中最流行的两种工具的相关性。虽然这两个解决方案实现了相似的目标,但由于各种原因,它们使用了不同的方法来吸引开发人员。
Terraform是一个历史悠久的工具,具有出色的平台支持和丰富的文档,而Pulumi则以其对大量编程语言的支持而显示出其包容性。
现有系统和技术的不断迭代导致了我们提供基础设施的方式的巨大进步。例如,Pulumi进入市场是为了破坏和改善Terraform多年来提供的服务。在很大程度上,他们已经成功了。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。