Terraform是管理云基础设施即代码的主流工具——在配置文件中定义服务器、数据库、网络和云服务,而非在Web控制台中点击操作。以下是诚实的介绍。
Terraform存在的原因
没有Terraform(或类似工具),云基础设施通过点击AWS/GCP/Azure控制台或编写部署脚本来管理。问题是:没有审计跟踪、没有可重现性、没有简单方法复制环境,以及你意图创建的内容和实际运行内容之间的偏移。基础设施即代码(IaC)解决了这一问题——配置文件是单一的事实来源,受版本控制,并被一致应用。
核心概念
Terraform使用HCL(HashiCorp配置语言)声明应该存在什么基础设施。你写出你想要的;Terraform弄清楚如何创建或修改它,并在应用前向你展示计划:
resource "aws_instance" "web" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"
tags = {
Name = "my-web-server"
}
}
运行terraform plan查看将要更改的内容。运行terraform apply来应用它。Terraform在状态文件中跟踪它创建的内容。
状态文件问题
Terraform的状态文件(terraform.tfstate)将你的配置映射到真实基础设施。如果该文件丢失或损坏,Terraform会失去对其管理内容的跟踪。对于团队使用,始终使用远程状态(Terraform Cloud、AWS S3 + DynamoDB锁定或Azure Storage)。永远不要将状态文件提交到git——它通常包含密钥。
免费学习入门
用于学习,Terraform可以在免费层配置资源:GitHub仓库、Cloudflare DNS记录、DigitalOcean水滴(免费层)或本地Docker容器(使用Docker provider)。这在学习工作流程的同时避免了AWS费用。Terraform注册表(registry.terraform.io)记录所有可用的provider。




