first commit

This commit is contained in:
2026-08-09 19:52:19 -04:00
commit f12fb4d7a1
25 changed files with 597 additions and 0 deletions
+88
View File
@@ -0,0 +1,88 @@
data "aws_availability_zones" "available" {
state = "available"
}
locals {
availability_zone = coalesce(var.availability_zone, data.aws_availability_zones.available.names[0])
}
resource "aws_vpc" "cluster" {
cidr_block = "10.42.0.0/16"
enable_dns_hostnames = true
enable_dns_support = true
tags = { Name = "k8s-security-baseline" }
}
resource "aws_subnet" "cluster" {
vpc_id = aws_vpc.cluster.id
cidr_block = "10.42.1.0/24"
availability_zone = local.availability_zone
tags = { Name = "k8s-security-baseline" }
}
resource "aws_internet_gateway" "cluster" {
vpc_id = aws_vpc.cluster.id
}
resource "aws_route_table" "cluster" {
vpc_id = aws_vpc.cluster.id
route {
cidr_block = "0.0.0.0/0"
gateway_id = aws_internet_gateway.cluster.id
}
}
resource "aws_route_table_association" "cluster" {
subnet_id = aws_subnet.cluster.id
route_table_id = aws_route_table.cluster.id
}
resource "aws_security_group" "cluster" {
name = "k8s-security-baseline"
description = "Minimal access for the optional single-node K3s lab host"
vpc_id = aws_vpc.cluster.id
ingress {
description = "SSH from the administrator CIDR"
from_port = 22
to_port = 22
protocol = "tcp"
cidr_blocks = [var.admin_cidr]
}
ingress {
description = "Kubernetes API from the administrator CIDR"
from_port = 6443
to_port = 6443
protocol = "tcp"
cidr_blocks = [var.admin_cidr]
}
egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
}
}
resource "aws_instance" "k3s" {
ami = var.ami_id
instance_type = var.instance_type
subnet_id = aws_subnet.cluster.id
vpc_security_group_ids = [aws_security_group.cluster.id]
key_name = var.ssh_key_name
associate_public_ip_address = true
root_block_device {
volume_size = 30
volume_type = "gp3"
encrypted = true
}
tags = { Name = "k8s-security-baseline" }
}