基础设施即代码(IaC)理念
传统方式:登录云控制台 → 点击创建 → 填参数 → 等待。IaC 方式:编写配置文件 → terraform apply → 自动创建/更新。一键创建、一键销毁,完美支持 Git 版本管理。
HCL 核心语法
# main.tf
terraform {
required_providers {
aws = { source = "hashicorp/aws", version = "~> 5.0" }
}
backend "s3" { # State 远程存储
bucket = "my-terraform-state"
key = "prod/terraform.tfstate"
}
}
resource "aws_instance" "web" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t3.medium"
count = var.instance_count
tags = { Name = "web-${count.index}" }
}
variable "instance_count" { default = 3 }
output "instance_ips" {
value = aws_instance.web[*].public_ip
}
Module 复用
# modules/vpc/main.tf
resource "aws_vpc" "main" {
cidr_block = var.cidr
tags = { Name = var.name }
}
# 使用 Module
module "prod_vpc" {
source = "./modules/vpc"
cidr = "10.0.0.0/16"
name = "production"
}
State 管理最佳实践
- 使用远程 Backend(S3/GCS/Azure Storage + DynamoDB 锁)
- 禁止手动修改 State 文件
- State 按环境分离(dev/staging/prod 各自独立)
- 使用
terraform plan预览变更再执行
工作流
terraform init # 初始化
terraform plan # 预览变更
terraform apply # 执行(-auto-approve 跳过确认)
terraform destroy # 销毁所有资源