关注留言点赞,带你了解最流行的软件开发知识与最新科技行业趋势。
本指南重点介绍了您需要了解的有关 Terraform 的所有信息 — Terraform 是一种允许程序员安全高效地构建、更改和版本化基础架构的工具。
Terraform 是由 HashiCorp 创建的开源“基础架构即代码”工具。
作为一种声明式编码工具,Terraform 使开发人员能够使用一种称为 HCL(HashiCorp 配置语言)的高级配置语言来描述运行应用程序所需的“最终状态”云或本地基础设施。然后,它会生成一个达到该最终状态的计划,并执行该计划来供应基础设施。
由于 Terraform 使用简单的语法,可以跨多个云和本地数据中心配置基础设施,并且可以安全高效地重新配置基础设施以响应配置更改,因此它是目前最流行的基础设施自动化工具之一。如果您的组织计划部署混合云或多云环境,您可能希望或需要了解 Terraform。
为什么基础架构即代码 (IaC)?
为了更好地了解 Terraform 的优势,首先了解基础架构即代码 (IaC) 的优势会有所帮助。IaC 允许开发人员以一种使供应自动化、更快和可重复的方式对基础设施进行编码。它是版本控制、持续集成和持续部署等敏捷和 DevOps 实践的关键组成部分。
基础架构即代码可以帮助解决以下问题:
- 提高速度: 当您需要部署和/或连接资源时,自动化比手动导航界面更快。
- 提高可靠性:如果您的基础架构很大,则很容易错误地配置资源或以错误的顺序提供服务。使用 IaC,资源始终完全按照声明的方式提供和配置。
- 防止配置漂移: 当供应您的环境的配置不再与实际环境匹配时,就会发生配置漂移。(参见下文‘不可变基础设施’。)
- 支持实验、测试和优化:因为基础架构即代码使配置新基础架构变得更快、更容易,您无需投入大量时间和资源即可进行和测试实验性更改,如果您喜欢结果,还可以快速扩展新的生产基础设施。

为什么选择 Terraform?
开发人员选择使用 Terraform 而不是其他基础架构即代码工具有几个关键原因:
- 开源: Terraform 得到了为平台构建插件的大型贡献者社区的支持。无论您使用哪个云提供商,都可以轻松找到插件、扩展和专业支持。这也意味着 Terraform 发展迅速,不断增加新的好处和改进。
- 平台不可知:这意味着您可以将它与任何云服务提供商一起使用。大多数其他 IaC 工具旨在与单个云提供商一起使用。
- 不可变的基础设施:大多数基础设施即代码工具创建可变的 基础设施,这意味着基础设施可以改变以适应中间件升级或新存储服务器等变化。可变基础设施的危险是配置漂移—— 随着变化的堆积,不同服务器或其他基础设施元素的实际配置与原始配置“漂移”得更远,使得错误或性能问题难以诊断和纠正。Terraform 提供不可变的基础设施,这意味着随着环境的每一次变化,当前配置都会被一个新的配置所取代,并重新配置基础设施。更好的是,以前的配置可以保留为版本,以便在必要或需要时启用回滚。
Terraform 模块
Terraform模块是小型、可重用的 Terraform 配置,适用于一起使用的多个基础设施资源。Terraform 模块很有用,因为它们允许使用可重用、可配置的结构来自动化复杂的资源。即使是编写一个非常简单的 Terraform 文件也会生成一个模块。一个模块可以调用其他模块——称为子模块—— 这可以使组装配置更快、更简洁。模块也可以被多次调用,无论是在相同的配置中还是在不同的配置中。
Terraform提供者
Terraform提供者是实现资源类型的插件。提供商包含代表用户进行身份验证和连接到服务(通常来自公共云提供商)所需的所有代码。您可以为您使用的云平台和服务找到提供商,将它们添加到您的配置中,然后使用它们的资源来配置基础设施。几乎每个主要的云提供商、SaaS 产品等都可以使用由 Terraform 社区或各个组织开发和/或支持的提供商。有关详细列表,请参阅Terraform 文档。
Terraform 与 Kubernetes
有时,Terraform 和 Kubernetes 以及它们的实际作用之间存在混淆。事实上,它们不是替代品,实际上可以有效地协同工作。
Kubernetes 是一种开源容器编排系统,可让开发人员将部署安排到计算集群中的节点上,并主动管理容器化的工作负载,以确保其状态符合用户的意图。
另一方面,Terraform 是一种基础设施即代码工具,具有更广泛的应用范围,让开发人员能够自动化跨越多个公共云和私有云的完整基础设施。
Terraform 可以自动化和管理基础架构即服务 (IaaS)、平台即服务 (PaaS) 甚至软件即服务 (SaaS) 级别的功能,并跨所有这些提供商构建所有这些资源在平行下。您可以使用 Terraform 自动配置 Kubernetes——特别是云平台上的托管 Kubernetes 集群——并将应用程序自动部署到集群中。
Terraform 与 Ansible
Terraform 和 Ansible 都是基础架构即代码工具,但两者之间存在一些显着差异:
- 虽然 Terraform 纯粹是一种声明式工具(见上文),但 Ansible 结合了声明式和过程式配置。在程序配置中,您可以指定将基础设施配置为所需状态的步骤或精确方式。过程配置需要更多工作,但它提供了更多控制。
- Terraform 是开源的;Ansible 由 Red Hat 开发和销售。
IBM 和 Terraform
IBM Cloud Schematics 是 IBM 基于 Terraform 的免费云自动化工具。IBM Cloud Schematics 允许您全面管理基于 Terraform 的基础架构自动化,这样您就可以花更多时间构建应用程序,减少构建环境的时间。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.