Develop

Terraform 基础设施即代码:云资源编排实战指南

✎ -- 字 🕐 -- 分钟
字号

基础设施即代码(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      # 销毁所有资源