-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.tf
126 lines (116 loc) · 3.49 KB
/
main.tf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
data "aws_vpc" "internship_vpc" {
id = "vpc-01fc1ec68a8b03eb9"
}
data "aws_subnet" "public_subnet_1" {
id = "subnet-0d4b3436fdda9803f"
}
data "aws_subnet" "public_subnet_2" {
id = "subnet-09d1848907ea68bca"
}
data "aws_subnet" "private_subnet_1" {
id = "subnet-0d5a03c63e1d24a17"
}
data "aws_subnet" "private_subnet_2" {
id = "subnet-00ec5ce7c1e376323"
}
data "aws_nat_gateway" "NG2" {
subnet_id = data.aws_subnet.public_subnet_2.id
}
data "aws_nat_gateway" "NG1" {
subnet_id = data.aws_subnet.public_subnet_1.id
}
data "aws_internet_gateway" "default" {
filter {
name = "attachment.vpc-id"
values = [data.aws_vpc.internship_vpc.id]
}
}
data "aws_route53_zone" "hosted_zone" {
name = "sdepetri.site."
# private_zone = false
}
data "aws_acm_certificate" "sd-certificate" {
domain = "sdepetri.site"
statuses = ["ISSUED"]
most_recent = true
}
data "aws_ami" "amazon_linux" {
most_recent = true
owners = ["amazon"]
filter {
name = "name"
values = ["amzn2-ami-ecs-hvm-*-x86_64-ebs"]
}
}
# Network Module
module "network" {
source = "./modules/network"
}
# Autoscaling
module "sd_asg" {
source = "./modules/autoscaling"
launch_template_name = var.launch_template_name
ami_id = var.ami_id
instance_type = var.instance_type
security_group_id = aws_security_group.sd_ec2_sg.id
user_data_file = "${path.module}/user_data.sh"
autoscaling_group_name = "sd_asg"
private_subnets = [data.aws_subnet.private_subnet_1.id, data.aws_subnet.private_subnet_2.id]
target_group_arn = module.alb.target_group_arn
# Variables para el Auto Scaling
min_size = var.asg_min_size
desired_capacity = var.asg_desired_capacity
max_size = var.asg_max_size
iam_inst_profile_arn = "arn:aws:iam::253490770873:instance-profile/ecsInstanceRole"
}
# ALB Module
module "alb" {
source = "./modules/alb"
alb_name = var.alb_name
certificate_arn = data.aws_acm_certificate.sd-certificate.arn
security_group_id = aws_security_group.sd_alb_sg.id
public_subnets = module.network.public_subnets
vpc_id = module.network.vpc_id
target_group_name = "sd-target-group"
}
# ECS Module
module "sd_ecs" {
source = "./modules/sd-ecs"
cluster_name = var.cluster_name
task_family = var.task_family
container_name = var.container_name
container_image = var.container_image #i change to ECR -> /sd-pipeline-test:latest"
task_cpu = var.task_cpu
task_memory = var.task_memory
container_cpu = var.container_cpu
container_memory = var.container_memory
container_port = var.container_port
service_name = var.service_name
task_desired_count = var.task_desired_count
target_group_arn = module.alb.target_group_arn # problem not fixed jet
autoscaling_group_arn = module.sd_asg.asg_arn
excu_role = var.excu_role
}
# Route53 Record
resource "aws_route53_record" "alb_record" {
zone_id = data.aws_route53_zone.hosted_zone.zone_id
name = var.domain_name
type = "A"
alias {
name = module.alb.alb_dns_name
zone_id = module.alb.alb_zone_id
evaluate_target_health = false
}
depends_on = [
module.alb
]
}
# resource "aws_dynamodb_table" "sd_terraform_lock" {
# name = "sd_terraform_lock"
# billing_mode = "PAY_PER_REQUEST"
# hash_key = "LockID"
# attribute {
# name = "LockID"
# type = "S"
# }
# }