Files
windmill/examples/deploy/aws-ecs-terraform/windmill_server.tf
Guillaume Bouvignies 2edba18038 feat: Tag override for scheduled scripts (#2998)
* feat: Tag override for scheduled scripts

* Refactor WorkerTagPicker to component

* Fix test
2024-01-13 00:06:54 +01:00

93 lines
2.8 KiB
HCL

resource "aws_cloudwatch_log_group" "windmill_cluster_windmill_server_log_group" {
name = "/ecs/windmill-server"
}
resource "aws_ecs_task_definition" "windmill_cluster_windmill_server_td" {
family = "windmill-server"
network_mode = "awsvpc"
execution_role_arn = data.aws_iam_role.ecs_task_execution_role.arn
cpu = 1024
memory = 1536
runtime_platform {
operating_system_family = "LINUX"
cpu_architecture = "X86_64"
}
requires_compatibilities = ["EC2"]
container_definitions = jsonencode([
{
name = "windmill-server"
image = "ghcr.io/windmill-labs/windmill-ee:main"
cpu = 1024
memory = 1536
essential = true
portMappings = [
{
name = "http"
containerPort = 8000
hostPort = 8000
protocol = "tcp"
appProtocol = "http"
}
]
environment = [{
name = "JSON_FMT"
value = "true"
}, {
name = "DATABASE_URL"
value = "postgres://${aws_db_instance.windmill_cluster_rds.username}:${aws_db_instance.windmill_cluster_rds.password}@${aws_db_instance.windmill_cluster_rds.endpoint}/${aws_db_instance.windmill_cluster_rds.db_name}?sslmode=disable"
}, {
name = "MODE"
value = "server"
}]
healthCheck = {
command = ["CMD-SHELL", "curl -f http://localhost:8000/api/version || exit 1"]
interval = 10
timeout = 5
retries = 5
}
logConfiguration = {
logDriver = "awslogs"
options = {
"awslogs-group" = aws_cloudwatch_log_group.windmill_cluster_windmill_server_log_group.name
"awslogs-region" = data.aws_region.current.name
"awslogs-stream-prefix" = "ecs"
}
}
}
])
}
resource "aws_ecs_service" "windmill_cluster_windmill_server_service" {
name = "windmill-server"
cluster = aws_ecs_cluster.windmill_cluster.id
task_definition = aws_ecs_task_definition.windmill_cluster_windmill_server_td.arn
desired_count = 2
network_configuration {
subnets = [
aws_subnet.windmill_cluster_subnet_private1.id,
aws_subnet.windmill_cluster_subnet_private2.id,
]
security_groups = [aws_security_group.windmill_cluster_sg.id]
}
force_new_deployment = true
placement_constraints {
type = "distinctInstance"
}
capacity_provider_strategy {
capacity_provider = aws_ecs_capacity_provider.windmill_cluster_capacity_provider.name
weight = 100
}
load_balancer {
target_group_arn = aws_lb_target_group.windmill_cluster_windmill_server_tg.arn
container_name = "windmill-server"
container_port = 8000
}
depends_on = [aws_autoscaling_group.windmill_cluster_asg]
}