Files
windmill/examples/deploy/aws-ecs-terraform/ecs_cluster.tf
David Zhang 85e50e3a60 Update AMI used in aws-ecs-terraform example (#3448)
Previous AMI no longer exists, updated to latest Amazon Linux 2023
2024-03-21 10:45:19 +01:00

95 lines
2.4 KiB
HCL

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"
instance_type = "t3.medium"
# vpc_security_group_ids = [aws_security_group.windmill_cluster_sg.id]
block_device_mappings {
device_name = "/dev/xvda"
ebs {
volume_size = 100
}
}
iam_instance_profile {
name = "ecsInstanceRole"
}
network_interfaces {
device_index = 0
delete_on_termination = true
associate_public_ip_address = true
security_groups = [
aws_security_group.windmill_cluster_sg.id
]
}
user_data = filebase64("${path.module}/lt_init_script.sh")
tag_specifications {
resource_type = "instance"
tags = {
Name = "ECS Instance - windmill-cluster"
}
}
}
resource "aws_autoscaling_group" "windmill_cluster_asg" {
name = "windmill-cluster-asg"
max_size = 10
min_size = 1
vpc_zone_identifier = [
aws_subnet.windmill_cluster_subnet_private1.id,
aws_subnet.windmill_cluster_subnet_private2.id
]
launch_template {
id = aws_launch_template.windmill_cluster_lt.id
version = "$Latest"
}
health_check_type = "EC2"
tag {
key = "AmazonECSManaged"
value = true
propagate_at_launch = true
}
}
resource "aws_ecs_cluster" "windmill_cluster" {
name = "windmill-cluster"
}
resource "aws_ecs_capacity_provider" "windmill_cluster_capacity_provider" {
name = "windmill-cluster-capacity-provider"
auto_scaling_group_provider {
auto_scaling_group_arn = aws_autoscaling_group.windmill_cluster_asg.arn
managed_scaling {
maximum_scaling_step_size = 5
minimum_scaling_step_size = 1
status = "ENABLED"
}
}
}
resource "aws_ecs_cluster_capacity_providers" "windmill_cluster_cluster___capacity_provider" {
cluster_name = aws_ecs_cluster.windmill_cluster.name
capacity_providers = [
aws_ecs_capacity_provider.windmill_cluster_capacity_provider.name,
aws_ecs_capacity_provider.windmill_cluster_high_performance_capacity_provider.name # remove if not using high performance workers
]
default_capacity_provider_strategy {
base = 1
weight = 100
capacity_provider = aws_ecs_capacity_provider.windmill_cluster_capacity_provider.name
}
}