「译文」什么是 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
相关文章
|
运维 持续交付 网络安全
自动化运维:Ansible与Terraform的比较
【8月更文挑战第16天】Ansible和Terraform都是自动化运维领域的重要工具,它们各自以其独特的功能和优势在市场中占据了一席之地。在选择使用哪个工具时,用户应根据自己的实际需求和应用场景进行综合考虑。如果主要关注系统配置管理和应用程序部署,那么Ansible可能是一个更好的选择;如果主要关注基础设施的自动化部署和管理,那么Terraform可能更适合您的需求。
1133 3
|
运维 Linux Apache
Puppet 作为一款强大的自动化运维工具,被广泛应用于配置管理领域。通过定义资源的状态和关系,Puppet 能够确保系统始终处于期望的配置状态。
Puppet 作为一款强大的自动化运维工具,被广泛应用于配置管理领域。通过定义资源的状态和关系,Puppet 能够确保系统始终处于期望的配置状态。
488 3
|
存储 Linux 持续交付
史上最全 Terraform 入门教程,助你无坑入门!
【10月更文挑战第26天】这是一个全面的 Terraform 入门教程,涵盖了 Terraform 的基本概念、安装步骤、基础配置、变量和输出变量的使用、模块的定义与使用,以及状态管理。通过实例讲解如何创建本地文件资源和 AWS S3 桶,帮助初学者快速上手并掌握 Terraform 的核心功能。
2253 8
|
Docker 容器
停止和删除所有 Docker 容器的详细指南
【8月更文挑战第18天】
5636 3
|
监控 安全 网络性能优化
|
存储 Kubernetes 负载均衡
在K8S中,Kube-Proxy为什么使用ipvs,而不使用iptables?
在K8S中,Kube-Proxy为什么使用ipvs,而不使用iptables?
|
Prometheus 监控 Cloud Native
Nacos集群监控搭建
Nacos 0.8.0版本完善了监控系统,支持通过暴露metrics数据接入第三方监控系统监控Nacos运行状态。
334 1
|
消息中间件 负载均衡 Java
消息队列 MQ使用问题之负载不均衡是什么导致的
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
域名解析 缓存 网络协议
【域名解析】如何将域名指向对应服务器IP
【域名解析】如何将域名指向对应服务器IP
4975 1
|
弹性计算 安全 关系型数据库
Terraform入门初实践
0.写在前面:在云巧资产市场中对项目进行交付过程中,能够快速复用已有组件和一键部署组件一直是我们追求的目标(关于云巧相关的理念可移步了解云巧 详细了解),因此以IaC理念出圈的Terraform,成为关注的重点。本文将介绍Terraform核心理念并结合运行demo完成对Terraform的探索和初级实践,为后续云巧市场更好的交付奠定基础。1.Terraform介绍:1.1 IACInfrastr
1423 0
Terraform入门初实践