Files
windmill/examples/deploy/aws-ecs-terraform/vpc.tf
T
Alexander PetricandClaude Opus 5.5 f183bd43fb chore: retire the standalone lsp and multiplayer images from examples, drop lsp/Dockerfile (#11341)
* chore: retire the standalone lsp and multiplayer images from examples, drop lsp/Dockerfile

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* chore: drop the unbuilt DockerfileMultiplayer, document running the LSP from windmill-extra

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(examples): ecs terraform destroys cleanly and gives private instances no public ip

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(examples): give windmill-extra on ecs a WINDMILL_BASE_URL for multiplayer auth, address review

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(examples): make the ecs example upgrade cleanly from the standalone lsp/multiplayer stack

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(examples): name the extra target group by prefix so create_before_destroy can replace it

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* docs(examples): note the brief editor-socket gap when upgrading the ecs example

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* docs(examples): the debugger stays off after the ecs upgrade unless enabled

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-25 17:13:06 +02:00

150 lines
4.2 KiB
Terraform

resource "aws_vpc" "windmill_cluster_vpc" {
cidr_block = "132.0.0.0/16"
instance_tenancy = "default"
tags = {
Name = "windmill-cluster-vpc"
}
}
resource "aws_subnet" "windmill_cluster_subnet_public1" {
vpc_id = aws_vpc.windmill_cluster_vpc.id
cidr_block = "132.0.0.0/20"
availability_zone = "us-east-2a"
map_public_ip_on_launch = true
tags = {
Name = "windmill-cluster-subnet-public1"
}
}
resource "aws_subnet" "windmill_cluster_subnet_public2" {
vpc_id = aws_vpc.windmill_cluster_vpc.id
cidr_block = "132.0.16.0/20"
availability_zone = "us-east-2b"
map_public_ip_on_launch = true
tags = {
Name = "windmill-cluster-subnet-public2"
}
}
resource "aws_subnet" "windmill_cluster_subnet_private1" {
vpc_id = aws_vpc.windmill_cluster_vpc.id
cidr_block = "132.0.128.0/20"
availability_zone = "us-east-2a"
map_public_ip_on_launch = false
tags = {
Name = "windmill-cluster-subnet-private1"
}
}
resource "aws_subnet" "windmill_cluster_subnet_private2" {
vpc_id = aws_vpc.windmill_cluster_vpc.id
cidr_block = "132.0.144.0/20"
availability_zone = "us-east-2b"
map_public_ip_on_launch = false
tags = {
Name = "windmill-cluster-subnet-private2"
}
}
resource "aws_internet_gateway" "windmill_cluster_internet_gateway" {
vpc_id = aws_vpc.windmill_cluster_vpc.id
tags = {
Name = "windmill-cluster-internet-gateway"
}
}
resource "aws_eip" "windmill_cluster_nat_gateway_public1_eip" {
vpc = true
}
resource "aws_nat_gateway" "windmill_cluster_nat_gateway_public1" {
allocation_id = aws_eip.windmill_cluster_nat_gateway_public1_eip.id
subnet_id = aws_subnet.windmill_cluster_subnet_public1.id
tags = {
"Name" = "windmill-cluster-nat-gateway-public1"
}
# Created after, and deleted before, the internet gateway it routes through.
depends_on = [aws_internet_gateway.windmill_cluster_internet_gateway]
}
resource "aws_eip" "windmill_cluster_nat_gateway_public2_eip" {
vpc = true
}
resource "aws_nat_gateway" "windmill_cluster_nat_gateway_public2" {
allocation_id = aws_eip.windmill_cluster_nat_gateway_public2_eip.id
subnet_id = aws_subnet.windmill_cluster_subnet_public2.id
tags = {
"Name" = "windmill-cluster-nat-gateway-public2"
}
# Created after, and deleted before, the internet gateway it routes through.
depends_on = [aws_internet_gateway.windmill_cluster_internet_gateway]
}
resource "aws_route_table" "windmill_cluster_rtb_public" {
vpc_id = aws_vpc.windmill_cluster_vpc.id
route {
cidr_block = "0.0.0.0/0"
gateway_id = aws_internet_gateway.windmill_cluster_internet_gateway.id
}
tags = {
Name = "windmill-cluster-rtb-public"
}
}
resource "aws_route_table_association" "windmill_cluster_subnet_public1__rtb_public" {
subnet_id = aws_subnet.windmill_cluster_subnet_public1.id
route_table_id = aws_route_table.windmill_cluster_rtb_public.id
}
resource "aws_route_table_association" "windmill_cluster_subnet_public2__rtb_public" {
subnet_id = aws_subnet.windmill_cluster_subnet_public2.id
route_table_id = aws_route_table.windmill_cluster_rtb_public.id
}
resource "aws_route_table" "windmill_cluster_rtb_private1" {
vpc_id = aws_vpc.windmill_cluster_vpc.id
route {
cidr_block = "0.0.0.0/0"
nat_gateway_id = aws_nat_gateway.windmill_cluster_nat_gateway_public1.id
}
tags = {
Name = "windmill-cluster-rtb-private1"
}
}
resource "aws_route_table_association" "windmill_cluster_subnet_private1__rtb_private1" {
subnet_id = aws_subnet.windmill_cluster_subnet_private1.id
route_table_id = aws_route_table.windmill_cluster_rtb_private1.id
}
resource "aws_route_table" "windmill_cluster_rtb_private2" {
vpc_id = aws_vpc.windmill_cluster_vpc.id
route {
cidr_block = "0.0.0.0/0"
nat_gateway_id = aws_nat_gateway.windmill_cluster_nat_gateway_public2.id
}
tags = {
Name = "windmill-cluster-rtb-private2"
}
}
resource "aws_route_table_association" "windmill_cluster_subnet_private2__rtb_private2" {
subnet_id = aws_subnet.windmill_cluster_subnet_private2.id
route_table_id = aws_route_table.windmill_cluster_rtb_private2.id
}