Terraform是HashiCorp提供的基础设施即代码工具。它是以安全、可重复的方式构建、变更和管理基础结构的工具。运营商和基础设施团队可以使用Terraform来管理环境,使用Terraform通过称为HashiCorp配置语言(HCL)的配置语言来管理环境,以实现人类可读的自动化部署。

原文地址:https://learn.hashicorp.com/terraform/getting-started/intro

基础设施即代码


如果将基础结构作为代码使用对你来说是一个新概念,那么可以这么解释,它是在一个或多个文件中管理基础结构的过程,而不是在用户界面中手动配置资源。此实例中的资源是给定环境中的任何基础结构,如虚拟机、安全组、网络接口等。

在高层次上,Terraform允许运维人员使用HashiCorp配置语言(HCL),在几乎任何提供者(AWS、GCP、GitHub、Docker等)上创建包含所需资源定义的文件,并在应用时自动创建这些资源。

在本课程中,我们将介绍Terraform在AWS上创建基础设施的基本功能。


工作流程


一个简单的部署工作流将严格遵循以下步骤。我们将在本课程中更深入地介绍这些步骤和概念,如果您不立即理解这些概念,请不要惊慌。

  1. Scope - 确认需要为给定项目创建哪些资源
  2. Author - 根据作用域参数在HCL中创建配置文件
  3. Initialize - 在项目目录中使用配置文件运行terraform init,这将为项目下载正确的提供程序插件
  4. Plan & Apply - 运行terraform plan以验证创建过程,然后执行terraform apply以创建实际资源以及状态文件,该文件将配置文件中未来的变更与部署环境中实际的存在进行比较


Terraform的优势


虽然当前许多基础设施(如代码)产品可能在您的环境中工作,但Terraform旨在为任何规模的运营商和组织提供一些优势。

  1. 平台中立性
  2. 状态的管理
  3. 运维人员的信任

平台中立性


在现代数据中心中,可能有多个不同的云和平台来支持各种应用程序。使用Terraform,您可以通过创建配置文件来管理具有相同工作流的异构环境,以满足项目或组织的需要。

状态的管理


Terraform在项目首次初始化时创建状态文件。Terraform使用这个本地状态来创建计划并对基础设施进行更改。在任何操作之前,Terraform都会进行刷新,以使用真实的基础设施更新状态。这意味着Terraform的状态是测量配置变化的真实来源。如果进行了变更或将资源附加到配置中,Terraform会将这些变更与状态文件进行比。

运维人员的信任


Terraform中内置的工作流旨在通过促进易于重复的操作和一个规划阶段来增强用户的信心,从而允许用户确保Terraform采取的操作不会对其环境造成破坏。当terraform应用时,系统会提示用户查看提议的变更,并且必须确认变更,否则terraform将不应用提议的计划。