From dff89a03c2f688d9f2424095d8c20606ccc68bbb Mon Sep 17 00:00:00 2001 From: hkader-tl Date: Sat, 14 Dec 2024 04:21:14 -0800 Subject: [PATCH] fix: ECS terraform db url + ami issues (#4924) Modifications to improve the terraform experience for bringing up a windmill cluster. Due to the default RDS settings for the version in the terraform, we do not want to disable ssl in connecting. Additionally, change the TF to automatically pull the latest 2023 AMI. Given this is meant to be a quick start example, this seems better than hard-coding since eventually the hard-coded ami doesn't exist. --- examples/deploy/aws-ecs-terraform/ecs_cluster.tf | 3 +-- examples/deploy/aws-ecs-terraform/main.tf | 8 ++++++++ examples/deploy/aws-ecs-terraform/windmill_server.tf | 4 ++-- .../deploy/aws-ecs-terraform/windmill_worker_basic.tf | 4 ++-- .../aws-ecs-terraform/windmill_worker_high_performance.tf | 6 +++--- .../deploy/aws-ecs-terraform/windmill_worker_native.tf | 6 +++--- 6 files changed, 19 insertions(+), 12 deletions(-) diff --git a/examples/deploy/aws-ecs-terraform/ecs_cluster.tf b/examples/deploy/aws-ecs-terraform/ecs_cluster.tf index 10e7e6ff35..ee5f74d4c4 100644 --- a/examples/deploy/aws-ecs-terraform/ecs_cluster.tf +++ b/examples/deploy/aws-ecs-terraform/ecs_cluster.tf @@ -1,7 +1,6 @@ resource "aws_launch_template" "windmill_cluster_lt" { name = "windmill-cluster-lt" - // Amazon Linux 2023 https://docs.aws.amazon.com/linux/al2023/ug/naming-and-versioning.html - image_id = "ami-07bff6261f14c3a45" + image_id = data.aws_ssm_parameter.amazon_linux_2023.value instance_type = "t3.medium" # vpc_security_group_ids = [aws_security_group.windmill_cluster_sg.id] diff --git a/examples/deploy/aws-ecs-terraform/main.tf b/examples/deploy/aws-ecs-terraform/main.tf index 6c84b250b3..0382aff106 100644 --- a/examples/deploy/aws-ecs-terraform/main.tf +++ b/examples/deploy/aws-ecs-terraform/main.tf @@ -26,3 +26,11 @@ variable "database_password" { sensitive = true description = "RDS Database password" } + +locals { + db_url = "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}" +} + +data "aws_ssm_parameter" "amazon_linux_2023" { + name = "/aws/service/ecs/optimized-ami/amazon-linux-2023/recommended/image_id" +} diff --git a/examples/deploy/aws-ecs-terraform/windmill_server.tf b/examples/deploy/aws-ecs-terraform/windmill_server.tf index aefd13f1e7..c9ec07372b 100644 --- a/examples/deploy/aws-ecs-terraform/windmill_server.tf +++ b/examples/deploy/aws-ecs-terraform/windmill_server.tf @@ -33,9 +33,9 @@ resource "aws_ecs_task_definition" "windmill_cluster_windmill_server_td" { 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" + value = local.db_url }, { name = "MODE" value = "server" diff --git a/examples/deploy/aws-ecs-terraform/windmill_worker_basic.tf b/examples/deploy/aws-ecs-terraform/windmill_worker_basic.tf index 75e9828348..9dd93a64dc 100644 --- a/examples/deploy/aws-ecs-terraform/windmill_worker_basic.tf +++ b/examples/deploy/aws-ecs-terraform/windmill_worker_basic.tf @@ -24,9 +24,9 @@ resource "aws_ecs_task_definition" "windmill_cluster_windmill_worker_td" { 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" + value = local.db_url }, { name = "MODE" value = "worker" diff --git a/examples/deploy/aws-ecs-terraform/windmill_worker_high_performance.tf b/examples/deploy/aws-ecs-terraform/windmill_worker_high_performance.tf index c45b78bd2c..1c7ff33308 100644 --- a/examples/deploy/aws-ecs-terraform/windmill_worker_high_performance.tf +++ b/examples/deploy/aws-ecs-terraform/windmill_worker_high_performance.tf @@ -1,6 +1,6 @@ resource "aws_launch_template" "windmill_cluster_high_performance_lt" { name = "windmill-cluster-high-perf-lt" - image_id = "ami-09c0b8e7f21923ac0" + image_id = data.aws_ssm_parameter.amazon_linux_2023.value instance_type = "t3.xlarge" # vpc_security_group_ids = [aws_security_group.windmill_cluster_sg.id] @@ -99,9 +99,9 @@ resource "aws_ecs_task_definition" "windmill_cluster_windmill_high_performance_w 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" + value = local.db_url }, { name = "MODE" value = "worker" diff --git a/examples/deploy/aws-ecs-terraform/windmill_worker_native.tf b/examples/deploy/aws-ecs-terraform/windmill_worker_native.tf index 593de7ed7d..1951405b8b 100644 --- a/examples/deploy/aws-ecs-terraform/windmill_worker_native.tf +++ b/examples/deploy/aws-ecs-terraform/windmill_worker_native.tf @@ -24,9 +24,9 @@ resource "aws_ecs_task_definition" "windmill_cluster_windmill_native_worker_td" 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" + value = local.db_url }, { name = "MODE" value = "worker" @@ -77,4 +77,4 @@ resource "aws_ecs_service" "windmill_cluster_windmill_native_worker_service" { } depends_on = [aws_autoscaling_group.windmill_cluster_asg] -} \ No newline at end of file +}