[ PROMPT_NODE_24664 ]
Devops Iac Engineer 模板
[ SKILL_DOCUMENTATION ]
# 可直接使用的 DevOps 模板
## Terraform 模板
### 具备多可用区 (Multi-AZ) 的 AWS VPC
请参阅 [terraform.md](terraform.md) 获取完整的 VPC 模块实现。
### AWS EKS 集群
hcl
module "eks" {
source = "terraform-aws-modules/eks/aws"
version = "~> 19.0"
cluster_name = "${var.name_prefix}-cluster"
cluster_version = "1.28"
vpc_id = module.vpc.vpc_id
subnet_ids = module.vpc.private_subnet_ids
cluster_endpoint_public_access = false
cluster_endpoint_private_access = true
cluster_addons = {
coredns = {
most_recent = true
}
kube-proxy = {
most_recent = true
}
vpc-cni = {
most_recent = true
}
aws-ebs-csi-driver = {
most_recent = true
}
}
eks_managed_node_groups = {
general = {
min_size = 2
max_size = 10
desired_size = 3
instance_types = ["t3.large"]
capacity_type = "ON_DEMAND"
labels = {
role = "general"
}
tags = {
NodeGroup = "general"
}
}
spot = {
min_size = 0
max_size = 10
desired_size = 2
instance_types = ["t3.large", "t3a.large"]
capacity_type = "SPOT"
labels = {
role = "spot"
}
taints = [{
key = "spot"
value = "true"
effect = "NoSchedule"
}]
tags = {
NodeGroup = "spot"
}
}
}
tags = var.tags
}
### AWS RDS PostgreSQL
hcl
resource "aws_db_subnet_group" "main" {
name = "${var.name_prefix}-db-subnet-group"
subnet_ids = var.private_subnet_ids
tags = merge(
var.tags,
{
Name = "${var.name_prefix}-db-subnet-group"
}
)
}
resource "aws_db_parameter_group" "postgres" {
name = "${var.name_prefix}-postgres-params"
family = "postgres15"
parameter {
name = "log_connections"
value = "1"
}
parameter {
name = "log_disconnections"
value = "1"
}
parameter {
name = "log_duration"
value = "1"
}
parameter {
name = "log_statement"
value = "all"
}
tags = var.tags
}
resource "aws_db_instance" "main" {
identifier = "${var.name_prefix}-db"
engine = "postgres"
engine_version = "15.4"
instance_class = var.instance_class
allocated_storage = var.allocated_storage
max_allocated_storage = var.max_allocated_storage
storage_type = "gp3"
storage_encrypted = true
kms_key_id = aws_kms_key.rds.arn
db_name = var.