Terraform 基础设施即代码:AWS EC2+RDS 的自动化部署
·
Terraform 基础设施即代码:AWS EC2 + RDS 自动化部署
一、核心概念
通过声明式配置文件描述基础设施,实现一键部署:
- EC2:计算资源,运行业务应用
- RDS:托管数据库服务,支持MySQL/PostgreSQL等
- 自动化依赖:自动处理网络配置、安全组规则等依赖关系
二、配置文件示例
创建 main.tf 文件,包含以下核心模块:
# 1. 配置AWS提供商
provider "aws" {
region = "us-east-1"
}
# 2. 创建VPC网络
resource "aws_vpc" "main" {
cidr_block = "10.0.0.0/16"
}
# 3. 安全组配置(允许HTTP/SSH)
resource "aws_security_group" "web_sg" {
vpc_id = aws_vpc.main.id
ingress {
from_port = 80
to_port = 80
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
ingress {
from_port = 22
to_port = 22
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
}
# 4. EC2实例部署
resource "aws_instance" "app_server" {
ami = "ami-0c55b159cbfafe1f0" # Ubuntu 20.04
instance_type = "t3.micro"
vpc_security_group_ids = [aws_security_group.web_sg.id]
user_data = file("init_script.sh") # 初始化脚本
}
# 5. RDS数据库部署
resource "aws_db_instance" "mysql_db" {
allocated_storage = 20
engine = "mysql"
instance_class = "db.t3.micro"
username = "admin"
password = "securepassword123"
publicly_accessible = false
skip_final_snapshot = true
vpc_security_group_ids = [aws_security_group.web_sg.id]
}
三、部署流程
-
初始化环境
terraform init -
预览执行计划
terraform plan -
应用配置
terraform apply # 输入 yes 确认 -
验证资源
- AWS控制台查看新建的EC2和RDS实例
- 通过SSH连接EC2验证应用状态
-
销毁资源(避免持续计费)
terraform destroy
四、关键注意事项
- 安全实践
- 使用IAM角色替代硬编码密钥
- 通过AWS Secrets Manager管理数据库密码
- 高可用配置
- 为RDS启用多AZ部署
- 使用Auto Scaling组扩展EC2
- 状态管理
- 配置远程状态存储(如S3)
terraform { backend "s3" { bucket = "my-tf-state" key = "prod/terraform.tfstate" region = "us-east-1" } }
最佳实践:将代码拆分为模块(
network/,compute/,database/),使用变量文件(terraform.tfvars)管理环境差异。
更多推荐
所有评论(0)