一鍵部署
Vibe Prompt
「幫我用 Terraform 建立完整的 Web 服務架構:VPC + ALB + ECS Fargate + RDS。」
# main.tf - 完整 Web 架構
module "vpc" {
source = "./modules/vpc"
vpc_cidr = "10.0.0.0/16"
environment = "production"
public_subnets = ["10.0.1.0/24", "10.0.2.0/24"]
private_subnets = ["10.0.10.0/24", "10.0.20.0/24"]
}
resource "aws_ecs_cluster" "main" {
name = "web-cluster"
}
resource "aws_ecs_service" "web" {
name = "web-service"
cluster = aws_ecs_cluster.main.id
task_definition = aws_ecs_task_definition.web.arn
desired_count = 2
launch_type = "FARGATE"
network_configuration {
subnets = module.vpc.public_subnet_ids
security_groups = [aws_security_group.web.id]
assign_public_ip = true
}
}
resource "aws_db_instance" "main" {
engine = "postgres"
instance_class = "db.t3.micro"
allocated_storage = 20
db_name = "myapp"
username = "admin"
password = var.db_password
skip_final_snapshot = true
db_subnet_group_name = aws_db_subnet_group.main.name
}
output "alb_dns" {
value = aws_lb.main.dns_name
}
課程總結
Terraform 課程完成!
- ✅ HCL 語法
- ✅ 遠端 State
- ✅ Modules
- ✅ 多環境
- ✅ 一鍵部署
關鍵要點
- ✅ Terraform = Infrastructure as Code (IaC) 的業界標準
- ✅ HCL (HashiCorp Configuration Language) 宣告式定義基礎設施
- ✅
terraform plan顯示將要做的變更,apply執行變更 - ✅ State File (terraform.tfstate) 是真實世界的來源比對
- ✅ Module 讓基礎設施程式碼可以重用
常用命令
| 命令 | 用途 |
|------|------|
| terraform init | 初始化工作目錄,下載 Provider |
| terraform fmt | 格式化程式碼 |
| terraform validate | 驗證語法正確性 |
| terraform plan | 顯示執行計畫 |
| terraform apply | 執行變更 |
| terraform destroy | 刪除所有資源 |
| terraform state list | 列出 State 中的所有資源 |
一鍵部署完整環境
你已經學會了 Terraform 基礎、State 管理、Module 封裝、多環境管理。最後一章把這一切整合起來——讓你只需要執行一個指令,就能建立完整的生產環境。
最終目錄結構
terraform/
├── modules/
│ ├── vpc/
│ ├── ecs/
│ ├── rds/
│ └── monitoring/
├── environments/
│ ├── dev/
│ │ ├── main.tf
│ │ ├── terraform.tfvars
│ │ └── backend.tf
│ ├── staging/
│ └── prod/
├── global/
│ └── iam.tf
└── scripts/
└── deploy.sh
部署腳本
#!/bin/bash
# scripts/deploy.sh
ENV=${1:-dev}
echo "🚀 部署至 $ENV 環境"
cd environments/$ENV
# 初始化(包含遠端 State 設定)
terraform init
# 查看將要做的變更
terraform plan -out=tfplan
# 自動批准部署
echo "部署中..."
terraform apply -auto-approve tfplan
echo "✅ $ENV 環境部署完成!"
CI/CD 整合
name: Terraform Deploy
on:
push:
branches: [main]
paths:
- 'terraform/**'
jobs:
terraform:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: hashicorp/setup-terraform@v3
- run: terraform init
- run: terraform plan
- run: terraform apply -auto-approve
課程總結
| 章節 | 主題 | 你學會了 | |:----:|:----:|:--------:| | 1 | Terraform 基礎 | HCL 語法、Provider、資源定義 | | 2 | State 管理 | 遠端 State、鎖定、協作 | | 3 | Module | 封裝與重用基礎設施程式碼 | | 4 | 多環境 | Workspace、目錄結構、TFVars | | 5 | 一鍵部署 | 完整 CI/CD Pipeline |
你現在已經具備了使用 Terraform 管理真實世界雲端基礎設施的完整能力。