「译文」什么是 Terraform?

简介: 「译文」什么是 Terraform?

本指南强调了您需要了解的关于 Terraform 的一切——一个允许程序员安全有效地构建、更改和管理基础设施版本的工具。

什么是 Terraform?

Terraform 是一个开源的「基础设施即代码」(IaC)工具,由 HashiCorp 创建

Terraform 是一种 声明性 编码工具,开发人员可以使用一种名为 HCL (HashiCorp 配置语言)的高级配置语言来描述运行应用程序所需的「终端状态」云或内部基础设施。然后,它生成一个达到最终状态的计划(plan),并执行该计划来提供基础设施。

由于 Terraform 使用了简单的语法,可以跨多个云和本地数据中心提供基础设施,并且可以安全有效地根据配置更改重新提供基础设施,因此它是目前最流行的基础设施自动化工具之一。如果您的组织计划部署混合云或多云环境,您可能希望或需要了解 Terraform。

为什么需要「基础设施即代码」(IaC)?

为了更好地理解 Terraform 的优势,首先要理解基础设施即代码 (IaC) 的优势。IaC 允许开发人员以一种使供应自动化、更快和可重复的方式对基础设施进行编码。它是敏捷和 DevOps 实践的关键组件,比如版本控制、持续集成和持续部署。

基础设施即代码可以帮助以下:

  • 提高速度:当您需要部署和 / 或连接资源时,自动化比手动导航界面更快
  • 提高可靠性: 如果您的基础设施很大,那么很容易以错误的顺序配置资源或提供服务。使用 IaC 时,资源总是按照声明的方式进行分配和配置。
  • 防止配置漂移: 当配置您的环境不再与实际环境匹配时,就会发生配置漂移。(请参阅下面的「不可变的基础设施」。)
  • 支持实验、测试和优化: 因为基础设施即代码使得提供新的基础设施变得更快更容易,你可以在不投入大量时间和资源的情况下进行和测试实验性的更改;如果您喜欢结果,您可以快速扩大新的基础设施的生产规模。

参见「什么是基础设施即代码?」仔细看看下面视频:

视频链接截图,可以通过原文链接观看

为什么选择 Terraform?

有一些关键原因,开发人员选择在其他基础设施上使用 Terraform 作为代码工具:

  • 开源:Terraform 得到了大量社区贡献者的支持,他们为平台构建插件。无论您使用哪种云提供商,都很容易找到插件、扩展和专业支持。这也意味着 Terraform 会快速进化,不断添加新的优点和改进
  • 平台无关: 这意味着您可以在任何云服务提供商中使用它。大多数其他 IaC 工具都是为单一云提供商而设计的。
  • 不可变基础设施 : 大多数基础设施即代码工具创建 可变 的基础设施,这意味着基础设施可以更改以适应中间件升级或新的存储服务器等更改。可变基础设施的危险在于配置漂移——随着更改的堆积,不同服务器或其他基础设施元素的实际供应与原始配置「漂移」得更远,使得错误或性能问题难以诊断和纠正。Terraform 规定是 不可变 的基础设施,这意味着随着环境的每次更改,当前配置将被替换为解释更改的新配置,并重新配置基础设施。更好的是,可以将以前的配置保留为版本,以便在必要或需要时支持回滚

Terraform 模块(Modules)

Terraform 模块是小型的、可重用的 Terraform 配置,用于一起使用多个基础设施资源。Terrform 模块非常有用,因为它们允许使用可重用的、可配置的结构来自动化复杂的资源。即使是编写一个非常简单的 Terraform 文件也会生成一个模块。一个模块可以调用其他模块(称为子模块 - child modules),这可以使组装配置更快、更简洁。模块也可以被多次调用,可以在相同的配置中,也可以在不同的配置中。

Terraform 供应商(Providers)

Terraform providers 是实现资源类型的插件。Providers 包含代表用户进行身份验证并连接到服务(通常来自公共云提供者)所需的所有代码。您可以为您使用的云平台和服务找到 providers,将它们添加到您的配置中,然后使用它们的资源来提供基础设施。Terraform 社区或个人组织开发和 / 或支持的 providers 几乎可以为所有主要的云提供商、SaaS 产品和更多服务提供服务。有关详细列表,请参阅 Terraform 文档(链接位于 IBM 之外)。

Terraform vs. Kubernetes

有时候,Terraform 和 Kubernetes 以及他们的实际工作之间会有混淆。事实是,它们不是替代方案,实际上是一起有效地工作。

Kubernetes 是一个开放源码的容器编排系统,它允许开发人员在计算集群的节点上安排部署,并主动管理容器化的工作负载,以确保它们的状态符合用户的意图。

另一方面,Terraform 是一个覆盖范围更广的基础设施代码工具,允许开发人员自动完成跨越多个公共云和私有云的基础设施。

Terraform 可以自动化和管理基础设施即服务 (IaaS)、平台即服务 (PaaS) 甚至软件即服务 (SaaS) 级别的功能,并在所有这些提供商之间并行构建所有这些资源。您可以使用 Terraform 自动化 Kubernetes 的供应——特别是云平台上的托管 Kubernetes 集群——并自动化将应用程序部署到集群中。

Terraform vs. Ansible

Terraform 和 Ansible 都是作为基础设施即代码工具,但两者之间有几个显著的区别:

  • Terraform 纯粹是一个声明性工具(见上文),而 Ansible 将声明性和过程性配置结合在一起。在过程配置中,您可以指定将基础设施提供到所需状态的步骤或精确的方式。过程配置需要更多的工作,但它提供了更多的控制
  • Terraform 是开源的,Ansible 是由红帽公司开发和销售的。

Terraform vs. Crossplane

Crossplane - 比 Terraform 更先进的云基础架构管理平台?

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
存储 缓存 固态存储
存储性能的关键指标:IOPS与吞吐量详解
【4月更文挑战第21天】
4502 0
|
存储 Linux 持续交付
史上最全 Terraform 入门教程,助你无坑入门!
【10月更文挑战第26天】这是一个全面的 Terraform 入门教程,涵盖了 Terraform 的基本概念、安装步骤、基础配置、变量和输出变量的使用、模块的定义与使用,以及状态管理。通过实例讲解如何创建本地文件资源和 AWS S3 桶,帮助初学者快速上手并掌握 Terraform 的核心功能。
3451 8
|
8月前
|
缓存 Java API
Java 面试实操指南与最新技术结合的实战攻略
本指南涵盖Java 17+新特性、Spring Boot 3微服务、响应式编程、容器化部署与数据缓存实操,结合代码案例解析高频面试技术点,助你掌握最新Java技术栈,提升实战能力,轻松应对Java中高级岗位面试。
587 0
|
SQL Java Maven
idea如何建立一个springboot项目
idea如何建立一个springboot项目
531 0
|
存储 安全 Android开发
F-Droid:尊重自由与隐私的安卓应用商店
F-Droid 是安卓平台上的自由开源应用商店,专为关注隐私和数据安全的用户设计。本文详细介绍了 F-Droid 的特点,包括其对自由和隐私的重视、无广告和无追踪代码的承诺、强大的应用搜索与管理功能,以及对开源社区的支持。用户可以通过 F-Droid 安全地浏览、安装和管理应用程序,并且开发者也可以发布开源应用。未来,F-Droid 将继续提升用户体验,鼓励更多的开发者与用户参与其中,推动自由开源软件的发展。
2318 1
|
网络协议 NoSQL API
深入理解 RDMA 的软硬件交互机制
本文深入分析了RDMA技术在数据中心高性能网络环境下的工作原理及软硬件交互机制,通过对比传统Kernel TCP,突出了RDMA在减少延迟、提高系统性能方面的优势,同时讨论了其在内存管理、软硬交互方面的关键技术和挑战,为读者提供了全面理解RDMA技术及其应用场景的视角。
5487 8
|
Docker 容器
停止和删除所有 Docker 容器的详细指南
【8月更文挑战第18天】
6291 3
|
存储 负载均衡 NoSQL
MongoDB架构设计
【6月更文挑战第6天】MongoDB架构设计
467 2
|
设计模式 运维 监控
运维一体化平台的能力要素
【6月更文挑战第7天】一体化运维平台的重要性,旨在建立覆盖运维全生命周期的统一平台,提升效率,保障业务连续性,实现数字化运维管理。

热门文章

最新文章