使

使用 Terraform 管理基础设施资源

2025-06-10

使用 Terraform 管理基础设施资源

DevOps 已经走过了漫长的道路,每个组织都渴望拥抱它。随着 DevOps 成为主流,它催生了众多工具。自动化一直是 DevOps 方法中不可或缺的一部分。每位 DevOps 工程师都致力于将日常任务自动化,并追求卓越。DevOps 工程师渴望自动化,并注重效率。他们也乐于学习新技能,以提高工作效率。开发人员和 DevOps 工程师都是聪明人。他们渴望成为那种能够解答问题而不是提出问题的工程师。

即使我们认为 DevOps 是一种文化现象,我们也需要工具来实现 DevOps。市面上有如此多的工具,有时选择起来会让人不知所措。对于 DevOps 人员来说,基础设施即代码 (IaC) 工具是必备工具之一。尤其是Terraform,因为它已经统治了基础设施自动化领域。学习如何使用 Terraform 之类的工具将帮助您轻松实现公司基础设施设置和资源分配的自动化。继续阅读,了解为什么要学习 Terraform、它是什么以及我们提供的入门技巧。

什么是基础设施即代码 (IaC)

DevOps 是连接软件开发人员和运营团队的桥梁,旨在简化软件开发流程。秉承 DevOps 文化,公司可以更快地构建软件、快速交付,并更快速地响应不断变化的客户需求。许多组织将基础设施即代码 (IaC) 作为其正确实施 DevOps 流程的基本实践之一。IaC 是一种以代码格式定义、配置和管理所需基础设施的方法。这有助于您减少通过手动流程构建基础设施所需的工作量和时间。

Terraform DevOps

DevOps 和基础设施即代码 (IaC) 已成为企业简化软件开发流程不可或缺的要素。DevOps 和 IaC 均可帮助工程师自动化手动任务,使他们能够专注于开发新功能,而无需将时间浪费在繁琐的任务上。DevOps 与 IaC 的结合,可以减少人为错误,增强软件开发人员与 IT 团队之间的协作,改进部署流程,并加快软件交付周期。IAC 使企业中的每个人都能够将物理服务器、网络、存储系统、数据库和其他运营资产视为可编程的虚拟对象。

另外,让我们看看“基础设施即代码 (IaC)”这个关键词在 Google 趋势中的表现。如你所见,趋势呈上升趋势。

信息架构

什么是 Terraform

Terraform 是一个开源工具,用于安全有效地构建、修改和版本控制基础设施。本质上,它是一个帮助开发人员管理基础设施的工具。Terraform 由 HashiCorp 于 2012 年开发,用 Golang 编写,自那时起不断发展。现在,它已被全球许多公司用作自动化基础设施管理的一种方式。Terraform 为开发人员提供了一种避免使用手动脚本的方法,因为手动脚本容易出错且难以维护。Terraform 使开发人员能够以代码格式描述其基础设施的期望状态,然后根据需要将更改应用于环境。Terraform 可以轻松地与所有服务提供商以及定制的内部解决方案集成。使用 Terraform 时,您需要以文本文件编写的 Terraform 配置。这些文本文件定义了您希望在基础设施方面创建的内容。这些配置以代码的形式描述。

Terraform 配置
图片来源:O'Reilly

例如,使用 Terraform,您只需几分钟即可配置一个基于基础设施即代码理念的 EC2 实例或 S3 存储桶。您无需 AWS 专家,只要您了解 Terraform 就足够了。不仅仅是一个实例,您还可以借助 Terraform 启动任何大型技术栈。

正如我们上面所讨论的,Terraform 使用配置文件来描述您想要创建的基础架构。这包括提供商凭据、资源 ID、IP 地址等信息。保存文件后,Terraform 就会构建您的基础架构。借助此基础架构,您可以启动服务器、数据库和负载均衡器等。Terraform 的配置文件由三个部分组成:变量部分、配置部分和输出部分。变量部分用于存储连接到基础架构所需的信息。配置部分包含创建基础架构的说明。输出部分用于查看构建进度。

在 Terraform 中,编写模块是管理基础架构不可或缺的一部分。任何开发者可以执行 init 和 apply 的 Terraform 资源配置都是一个模块。这些资源在 .tf 文件中指定。一个 Terraform 模块可以由一个或多个资源文件(即 .tf 文件)组成。
例如,下面这个简单的模块输出“Hello, World Terraform!”

terraform {
  required_version = ">= 0.12.26"
}
# website::tag::1:: Very simple Terraform module: that outputs "Hello, World Terraform!"
output "hello_world_terraform" {
  value = "Hello, World Terraform!"
}
Enter fullscreen mode Exit fullscreen mode

为什么选择 Terraform?

当需求明显较少时,您可以轻松配置基础架构,但如果您想配置大量虚拟机和负载均衡器怎么办?您喜欢反复访问云提供商的仪表板来执行这些操作吗?这非常耗时。在这种情况下,开发人员会浪费大量时间配置基础架构,而不是编写有价值的功能。手动配置基础架构资源会加重开发人员的负担。它还会带来一些配置错误的风险,并造成严重破坏。因此,我们需要一种解决方案来自动化资源配置,而无需手动完成所有操作。

那么,通过以代码形式定义所有内容来实现基础设施的自动化创建,这个想法怎么样?这有多棒?你无需手动配置每个所需资源;只需一个简单的工具即可完成所有操作。

基础设施即代码(IaC) 运动始于2011 年AWS 推出 CloudFormation。当时,CloudFormation 仅限于 AWS 资源,但需要一个与云无关的解决方案;于是,Mitchell Hashimoto 和 Armon Dadgar 向世界推出了 Hashicorp Terraform [来源:Hashicorp ]。

企业过去将基础设施托管在单一云提供商的时代已经一去不复返了。如今,在全新的云原生生态系统中,混合云和多云已成为避免供应商锁定并获得这些方法各种优势的必需品。Terraform 的优势就在于它是一款云无关的工具。Terraform 可以轻松管理混合云或多云部署。由于与云无关,Terraform 还提供了一种不可变的基础设施方法;一旦部署,资源将永远不会改变。要大规模管理基础设施,您需要 Terraform,否则手动管理和扩展基础设施将是一项艰巨的任务。

Terraform 对 IT 管理员来说是一个福音,因为它可以帮助他们轻松地重新配置基础设施。它还能帮助他们降低与旧的基础设施配置方法相关的运营成本。

为什么你应该了解 Terraform?

让我们再次访问 Google Trends,看看 Terraform 的表现如何。虽然趋势一直呈上升趋势,但在 2021 年之后,我们可以看到一个突然的飙升。这张图片应该能给所有 DevOps 工程师和开发人员一个提示,告诉他们为什么应该学习 Terraform。

地形趋势

DevOps 是一种文化;它不仅需要一套最佳实践,还需要一些最佳工具才能正确实施。如今,每个组织都被视为软件组织。迟早,他们会将工作负载从传统数据中心迁移到云端。许多组织已经将业务迁移到云端,并从中获益。

组织聘请 DevOps 工程师是为了确保软件在自动化的帮助下快速、高效地部署。为了自动化各种任务并部署软件,这些工程师需要了解不同的概念和工具。DeOps 中强烈推荐的一种方法是“基础设施即代码 (IaC)”。然而,基础设施自动化是每个组织都非常重视的事情,因此了解 Terraform 等 IaC 自动化工具的工程师需求量很大。

管理和配置基础设施并非易事。组织往往在这方面投入巨额资金。如果由一名技术不熟练的工程师以传统方式完成这项基础设施设置工作,就会成为组织中其他使用云原生技术的人员的瓶颈。

由于 IaC 涉及声明式格式和自动化,因此在配置和预置基础设施方面进展迅速。因此,组织在拥有技能并熟悉 Terraform 等工具的工程师方面投入了大量资金。

学习如何使用 Terraform 还有许多其他好处。

DevOps 工具需求旺盛

Terraform 是一款基础设施即代码 (IaC) 工具,在当今的 DevOps 行业中需求旺盛。具备 IaC 技能的 DevOps 工程师供不应求。如果他们熟悉 Terraform 这样的工具,将会是额外的优势。此外,上面分享的 Google 趋势图清楚地显示了 Terraform 的增长情况。

易于使用

借助简单的配置文件,工程师无需任何经验即可创建和管理可扩展的基础架构。这对于 DevOps 工程师、开发人员和架构师等不同角色的人员都大有裨益。开发人员喜欢易于使用和设置的工具。此外,Terraform 的学习曲线较低,使其成为 DevOps 市场中开发人员和 DevOps 工程师学习此工具的高效选择。

可扩展性

Terraform 允许您创建可随公司规模扩展的基础设施。这意味着您可以创建一个可轻松修改的系统,以适应大型项目和资源需求的变化。可扩展性是基础设施面临的一大挑战,因为它涉及巨大的成本。对于任何开发人员来说,学习这款工具来为公司可扩展的基础设施做出贡献都是极具吸引力的。

可重用性

Terraform 允许您将其配置文件用作模板。每当您需要创建类似的基础架构时,都可以使用相同的配置文件。这使得随着业务的增长,您的基础架构能够轻松扩展。开发人员一直在寻找这样的工具来简化他们的工作。

提高开发人员的生产力

Terraform 提升了开发人员的士气,因为一旦定义好文件,自动化就可以通过简单的命令完成关键部分。它通过帮助开发人员手动创建 IT 基础设施,减轻了他们的负担。许多工程师学习这款工具来自动化他们的日常任务。

如何开始使用 Terraform?

一个简单的教程可以帮助你更好地理解 Terraform。首先,我们有一个简单的 Hello World 教程。让我们一起学习 Terraform。

从官方网站安装Terraform

安装 Terraform 后,通过运行以下命令验证是否安装正确,
terraform --version

创建一个简单的目录
mkdir learn_terraform

进入目录。
cd learn_terraform

创建一个包含简单代码的简单 main.tf 文件来演示 Terraform 的工作原理。

terraform {
  required_version = ">= 0.12.26"
}
# website::tag::1:: Very simple Terraform module: that outputs "Hello, World Terraform!"
output "hello_world_terraform" {
  value = "Hello, World Terraform!"
}
Enter fullscreen mode Exit fullscreen mode

我们需要做的第一件事是使用以下命令初始化 Terraform,
terraform init

您应该看到的输出如下,

Terraform 正在启动
让我们用以下命令验证我们的 Terraform,
terraform validate

然后你应该看到一个输出,

有效的 Terraform

现在,使用以下命令应用我们的计划,
terraform apply

您应该看到的输出是,

Terraform 应用

第一次输入值时,您需要同意。您需要像上面一样填写“yes”。

最后一步是使用 destroy 命令。
terraform destroy

输出如下,

地形改造毁灭

现在,让我们比较一下 destroy 命令前后的状态。

更改的文件

您可以轻松看到两个州之间的差异。

让我们使用 Terraform 配置一个 NGINX 服务器:

如果你使用以下代码更新main.tf文件,你将能够通过 Docker 创建 nginx 容器。[为此,你需要在计算机上安装 Docker Desktop]

terraform {
  required_providers {
    docker = {
      source  = "kreuzwerker/docker"
      version = "~> 2.13.0"
    }
  }
}

provider "docker" {}

resource "docker_image" "nginx" {
  name         = "nginx:latest"
  keep_locally = false
}

resource "docker_container" "nginx" {
  image = docker_image.nginx.latest
  name  = "tutorial"
  ports {
    internal = 80
    external = 8000
  }
}
Enter fullscreen mode Exit fullscreen mode

在上面的文件中,我们定义了用于创建资源的 nginx 镜像。并将提供程序设置为 Docker。端口号指定为 80(内部端口)和 8000(外部端口)。一旦我们用上面的文件初始化并应用了计划,我们就应该能够看到 nginx 容器在 localhost:8000 上运行。

让我们用以下命令进行初始化,

terraform init

然后应用命令,

terraform apply

打开localhost:8000,您应该会看到nginx欢迎页面。

Nginx 运行

您可以通过运行以下命令来停止容器,
terraform destroy

线束和地形改造

Terraform 和 Harness 集成

如今,基础设施配置和自动化对于云原生应用至关重要。自动化基础设施配置使您的开发人员能够随时扩展和缩减部署,同时通过节省大量手动工作量来获得成本效益。借助 Terraform 等工具,IaC 成为现实,而当您将此策略集成到所有环境中的部署流水线中时,它会变得更加有趣。借助它,您可以有效地实现端到端自动化。Harness允许您使用 Terraform 在部署过程中配置基础设施。Harness 可以配置Terraform 提供程序或插件支持的任何资源

改造计划和摧毁

您可以轻松配置管道中的计划、应用和销毁步骤。

地形改造步骤

不同的地形改造阶段和步骤

结论

Terraform 通过自动化丰富了 DevOps 文化。它使 DevOps 专业人员能够以最可靠、一致且可预测的方式定义、预配和配置云资源。Terraform 运用基础设施即代码 (IaC) 原则,减轻了 IT 专业人员的负担。Terraform 是一款备受推荐的 DevOps 工具,并将持续使用。别忘了立即预约演示,体验 Harness 强大的 Terraform 集成功能。

鏂囩珷鏉ユ簮锛�https://dev.to/pavanbelagatti/using-terraform-to-manage-infrastruct-resources-32da
PREV
Handling complex MVC applications - How to scale and avoid Controller chaos Introduction
NEXT
Kubernetes GitOps:初学者指南及实践教程