@@ -23,53 +23,77 @@ locals {
2323 environment = " dev"
2424 name_prefix = " eatda"
2525
26- ec2_sg_id = data. terraform_remote_state . common . outputs . security_group_ids [" ec2" ]
27- instance_definitions = data. terraform_remote_state . common . outputs . instance_profile_name [" ec2-to-ecs" ]
28- instance_subnet_map = data. terraform_remote_state . common . outputs . public_subnet_ids
29- ecr_repo_urls = data. terraform_remote_state . bootstrap . outputs . ecr_repo_urls
30- ecs_services = var. ecs_services
31- ecs_task_definitions_base = var. ecs_task_definitions_base
32- alb_target_group_arns = data. terraform_remote_state . common . outputs . target_group_arns
26+ ec2_sg_id = data. terraform_remote_state . common . outputs . security_group_ids [" ec2" ]
27+ instance_subnet_map = data. terraform_remote_state . common . outputs . public_subnet_ids # 에러가 났던 부분
28+ ecr_repo_urls = data. terraform_remote_state . bootstrap . outputs . ecr_repo_urls
29+ ecs_services = var. ecs_services
30+ alb_target_group_arns = data. terraform_remote_state . common . outputs . target_group_arns
3331
3432 common_tags = {
3533 Project = local.project_name
3634 ManagedBy = " terraform"
3735 }
38- }
3936
40- locals {
4137 dev_instance_definitions = {
4238 ami = " ami-012ea6058806ff688"
4339 instance_type = " t2.micro"
4440 role = " dev"
45- iam_instance_profile = " ec2-to-ecs"
41+ iam_instance_profile = data.terraform_remote_state.common.outputs.instance_profile_name[ " ec2-to-ecs" ]
4642 key_name = " eatda-ec2-dev-key"
4743 user_data = <<- EOF
4844#!/bin/bash
4945echo ECS_CLUSTER=dev-cluster >> /etc/ecs/ecs.config
50-
5146fallocate -l 2G /swapfile
5247chmod 600 /swapfile
5348mkswap /swapfile
5449swapon /swapfile
55-
5650echo '/swapfile none swap sw 0 0' >> /etc/fstab
5751EOF
5852 }
59- }
6053
61- locals {
62- ecs_task_definitions = {
54+ task_definitions_with_roles = {
6355 for k , v in var . ecs_task_definitions_base :
6456 k = > merge (
6557 v,
6658 {
6759 execution_role_arn = data.terraform_remote_state.common.outputs.role_arn[" ecsTaskExecutionRole" ],
6860 task_role_arn = data.terraform_remote_state.common.outputs.role_arn[" ecsAppTaskRole" ]
69- },
70- k == " api-dev" ? {
71- container_image = " ${ data . terraform_remote_state . bootstrap . outputs . ecr_repo_urls [" dev" ]} :placeholder"
72- } : {},
61+ }
62+ )
63+ }
64+
65+ container_definitions_map = {
66+ for svc , def in local . task_definitions_with_roles : svc => [
67+ {
68+ name = svc
69+ image = svc == " api-dev" ? " ${ local . ecr_repo_urls [" dev" ]} :placeholder" : def.container_image
70+ cpu = def.cpu
71+ memory = def.memory
72+ essential = true
73+ stopTimeout = lookup (def, " stop_timeout" , 30 )
74+ command = svc == " api-dev" ? [" java" , " -Dspring.profiles.active=dev" , " -jar" , " /api.jar" ] : null
75+ portMappings = [
76+ for idx , port in def . container_port :
77+ { name = " ${ svc } -${ port } -tcp" , containerPort = port, hostPort = def.host_port[idx], protocol = " tcp" }
78+ ]
79+ environment = [for k , v in lookup (def, " environment" , {}) : { name = k, value = v }]
80+ secrets = [for s in lookup (def, " secrets" , []) : { name = s.name, valueFrom = s.valueFrom }]
81+ mountPoints = [
82+ for vol in lookup (def, " volumes" , []) : {
83+ sourceVolume = vol.name, containerPath = lookup (var. volume_mount_paths , vol. name , " /eatda" ),
84+ readOnly = false
85+ }
86+ ]
87+ }
88+ ]
89+ }
90+
91+ final_ecs_definitions_for_module = {
92+ for key , task_def in local . task_definitions_with_roles : key => merge (
93+ task_def,
94+ {
95+ container_definitions = local.container_definitions_map[key]
96+ }
7397 )
7498 }
7599}
0 commit comments