[T1] Terraform是什么?
背景 – Bei jing
我们从去年开始构建新的内部系统。以前的基础设施构建是完全手动进行的,没有引入IaC(基础设施即代码)相关的方法。在新的内部系统开发中,我们意识到要采用IaC等概念,以从以前的开发方式转向更现代化的方法。
Terraform 是什么?
现在虽然有点晚了,但是可以告诉我一下 Terraform 是什么吗?
Terraform(土地改造)是一种用于将基础设施以代码的形式进行管理的软件工具,DevOps团队(基础设施团队)可以使用可重用且共享的、易于阅读的配置文件自动化基础设施的供应。此工具可以自动化本地环境和云环境下的基础设施供应。我们决定在公司内部系统中完全使用Terraform和AWS云进行构建。
Terraform和IaC的关系
通过使用Terraform,基础设施团队可以以代码的形式描述和配置基础架构的所有组件,并进行自动化部署。这些代码存储在配置文件中,可以方便地共享、重复使用和进行版本管理。这些功能有助于创建和管理基础架构的统一工作流程,用于管理基础架构的整个生命周期。关于工作流程的详细信息将在另一篇文章中进行解释。
Terraform的配置文件是声明性的,描述了基础架构的最终状态。换句话说,构建基础是配置所需的形态。这个工具本身处理基本逻辑,无需编写创建所需基础架构资源的步骤。手动在控制台界面上点点点的手工操作都被基本逻辑完全替代了。我认为这是IaC的真髓所在。
使用Terraform的好处
使用Terraform,我们可以将云平台和API(服务的应用程序编程接口)进行代码化,使基础架构团队能够轻松进行以下工作。
・可以通过云提供商(例如AWS、GCP等)来创建资源。
・可以使用标准化的基础设施安全性和合规性。
・可以轻松实现配置文件的共享、重用和版本管理。
・可以在CICD等系统中管理Terraform的定义代码,并实现工作流程化。
更详细地解释一下,使用Terraform可以管理存储、网络资源等组件,以及高级组件如DNS条目。它还可以用于自动化安全策略、防火墙策略、数据库和服务器的配置。
Terraform的使用步骤
Terraform的使用步骤基于以下几个步骤。
-
- 创建配置文件:
-
- 使用Terraform创建一个配置文件(具有.tf扩展名的文件),该文件用于定义要使用Terraform进行基础设施资源的管理的配置。配置文件中包含了要使用的提供程序(云平台、本地系统等),要创建的资源以及资源之间的依赖关系等信息。
初始化环境:
配置文件完成后,使用Terraform进行初始化。通过命令行运行 $ terraform init,Terraform会下载所需的插件和模块,并设置项目目录。
创建计划:
运行 $ terraform plan 命令,Terraform会计划如何修改或进行基础设施的部署。在此步骤中,Terraform将提供一个包含变更摘要的执行计划,但实际上并不执行变更。
确认计划结果:
检查计划结果,确认变更内容是否符合预期。如果出现问题,可以调整和修正配置文件。修正后重新进行2. 初始化步骤。
应用变更:
使用 $ terraform apply 命令,将实际的基础设施变更应用于基础环境。在此步骤中,Terraform会根据计划创建、更新或删除资源。变更内容需要用户批准。如果在流水线中进行自动化,可以使用自动批准选项跳过用户批准,但为了防止误操作,需要在流水线中添加批准阶段。关于流水线的话题将在另一篇文章中进行说明。
基础设施状态管理:
当Terraform完成资源的部署和应用变更后,定期使用 $ terraform plan 进行基础设施的管理,并在需要时使用 $ terraform apply 进行变更。
状态文件管理:
Terraform生成状态文件(通常为terraform.tfstate)以跟踪基础设施的状态。该文件非常重要,用于同步Terraform项目和基础设施的状态。需要仔细管理。在本次公司内部系统的案例中,terraform.tfstate在AWS S3上进行管理。
清理:
如果资源不再需要,使用 $ terraform destroy 删除资源,以防止不必要的费用。然而,建议手动执行上述命令。此外,在执行上述命令后,需要用户批准。在批准时,需要仔细确认要删除的资源,并谨慎操作。
总结
这次我们尝试使用Terraform来构建新的公司内部系统,并引入基础设施即代码的概念。
Terraform是一个高度灵活且易于使用的工具,可以通过代码来管理基础设施,方便追踪变更历史、共享和重复使用。然而,创建配置文件和谨慎管理状态是非常重要的。我们计划在下一篇文章中详细介绍关于Terraform状态管理的内容。