mirror of
https://github.com/mr-vercetti/tf-aws-demo.git
synced 2025-01-18 19:35:34 +01:00
Add ALB
This commit is contained in:
parent
92afe542a3
commit
ffdb539b4d
61
modules/alb/main.tf
Executable file
61
modules/alb/main.tf
Executable file
@ -0,0 +1,61 @@
|
|||||||
|
resource "aws_security_group" "this" {
|
||||||
|
name = "demo-app-alb-sg"
|
||||||
|
|
||||||
|
vpc_id = var.VPC_ID
|
||||||
|
|
||||||
|
ingress {
|
||||||
|
description = "HTTP"
|
||||||
|
from_port = 80
|
||||||
|
to_port = 80
|
||||||
|
protocol = "tcp"
|
||||||
|
cidr_blocks = ["0.0.0.0/0"]
|
||||||
|
}
|
||||||
|
|
||||||
|
egress {
|
||||||
|
from_port = 0
|
||||||
|
to_port = 0
|
||||||
|
protocol = "-1"
|
||||||
|
cidr_blocks = ["0.0.0.0/0"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "aws_lb" "this" {
|
||||||
|
name = "demo-app-alb"
|
||||||
|
|
||||||
|
internal = false
|
||||||
|
load_balancer_type = "application"
|
||||||
|
security_groups = [aws_security_group.this.id]
|
||||||
|
subnets = var.ALB_SUBNETS_IDS
|
||||||
|
|
||||||
|
tags = {
|
||||||
|
Project = var.PROJECT_TAG
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "aws_lb_target_group" "this" {
|
||||||
|
name = "demo-app-alb-tg"
|
||||||
|
port = 80
|
||||||
|
protocol = "HTTP"
|
||||||
|
vpc_id = var.VPC_ID
|
||||||
|
|
||||||
|
health_check {
|
||||||
|
protocol = "HTTP"
|
||||||
|
port = 80
|
||||||
|
path = "/healthcheck.html"
|
||||||
|
healthy_threshold = 2
|
||||||
|
unhealthy_threshold = 2
|
||||||
|
interval = 90
|
||||||
|
timeout = 20
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "aws_lb_listener" "this" {
|
||||||
|
load_balancer_arn = aws_lb.this.arn
|
||||||
|
port = 80
|
||||||
|
protocol = "HTTP"
|
||||||
|
|
||||||
|
default_action {
|
||||||
|
target_group_arn = aws_lb_target_group.this.arn
|
||||||
|
type = "forward"
|
||||||
|
}
|
||||||
|
}
|
3
modules/alb/outputs.tf
Executable file
3
modules/alb/outputs.tf
Executable file
@ -0,0 +1,3 @@
|
|||||||
|
output "alb_tg" {
|
||||||
|
value = aws_lb_target_group.this
|
||||||
|
}
|
11
modules/alb/variables.tf
Executable file
11
modules/alb/variables.tf
Executable file
@ -0,0 +1,11 @@
|
|||||||
|
variable "VPC_ID" {
|
||||||
|
type = string
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "PROJECT_TAG" {
|
||||||
|
type = string
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "ALB_SUBNETS_IDS" {
|
||||||
|
type = list(string)
|
||||||
|
}
|
@ -27,14 +27,6 @@ resource "aws_security_group" "this" {
|
|||||||
cidr_blocks = ["0.0.0.0/0"]
|
cidr_blocks = ["0.0.0.0/0"]
|
||||||
}
|
}
|
||||||
|
|
||||||
ingress {
|
|
||||||
description = "HTTPS"
|
|
||||||
from_port = 443
|
|
||||||
to_port = 443
|
|
||||||
protocol = "tcp"
|
|
||||||
cidr_blocks = ["0.0.0.0/0"]
|
|
||||||
}
|
|
||||||
|
|
||||||
egress {
|
egress {
|
||||||
from_port = 0
|
from_port = 0
|
||||||
to_port = 0
|
to_port = 0
|
||||||
@ -72,6 +64,7 @@ resource "aws_autoscaling_group" "this" {
|
|||||||
vpc_zone_identifier = var.VPC_SUBNETS_IDS
|
vpc_zone_identifier = var.VPC_SUBNETS_IDS
|
||||||
health_check_type = "ELB"
|
health_check_type = "ELB"
|
||||||
health_check_grace_period = "90"
|
health_check_grace_period = "90"
|
||||||
|
target_group_arns = var.ALB_TARGET_GROUP_ARNS
|
||||||
|
|
||||||
tag {
|
tag {
|
||||||
key = "Name"
|
key = "Name"
|
||||||
|
@ -28,3 +28,8 @@ variable "ASG_MIN_SIZE" {
|
|||||||
variable "ASG_MAX_SIZE" {
|
variable "ASG_MAX_SIZE" {
|
||||||
type = number
|
type = number
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# ALB
|
||||||
|
variable "ALB_TARGET_GROUP_ARNS" {
|
||||||
|
type = list(string)
|
||||||
|
}
|
15
prod/main.tf
15
prod/main.tf
@ -12,8 +12,8 @@ module "vpc" {
|
|||||||
cidr = var.DEMO_VPC_CIDR
|
cidr = var.DEMO_VPC_CIDR
|
||||||
|
|
||||||
azs = var.DEMO_VPC_AVAILABILITY_ZONES
|
azs = var.DEMO_VPC_AVAILABILITY_ZONES
|
||||||
private_subnets = var.DEMO_VPC_PRIVATE_SUBNET_CIDRS
|
private_subnets = var.DEMO_VPC_PRIVATE_SUBNETS_CIDRS
|
||||||
public_subnets = var.DEMO_VPC_PUBLIC_SUBNET_CIDRS
|
public_subnets = var.DEMO_VPC_PUBLIC_SUBNETS_CIDRS
|
||||||
|
|
||||||
enable_nat_gateway = true
|
enable_nat_gateway = true
|
||||||
single_nat_gateway = true
|
single_nat_gateway = true
|
||||||
@ -52,6 +52,15 @@ module "bastion_host" {
|
|||||||
EC2_KEY_NAME = var.DEMO_BASTION_HOST_KEY_NAME
|
EC2_KEY_NAME = var.DEMO_BASTION_HOST_KEY_NAME
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Create ALB
|
||||||
|
module "alb" {
|
||||||
|
source = "../modules/alb"
|
||||||
|
|
||||||
|
VPC_ID = module.vpc_data.vpc.id
|
||||||
|
PROJECT_TAG = var.PROJECT_TAG
|
||||||
|
ALB_SUBNETS_IDS = module.vpc_data.public_subnets.ids
|
||||||
|
}
|
||||||
|
|
||||||
# Create demo app
|
# Create demo app
|
||||||
module "app" {
|
module "app" {
|
||||||
source = "../modules/app"
|
source = "../modules/app"
|
||||||
@ -65,4 +74,6 @@ module "app" {
|
|||||||
|
|
||||||
ASG_MIN_SIZE = var.DEMO_APP_ASG_MIN_SIZE
|
ASG_MIN_SIZE = var.DEMO_APP_ASG_MIN_SIZE
|
||||||
ASG_MAX_SIZE = var.DEMO_APP_ASG_MAX_SIZE
|
ASG_MAX_SIZE = var.DEMO_APP_ASG_MAX_SIZE
|
||||||
|
|
||||||
|
ALB_TARGET_GROUP_ARNS = [module.alb.alb_tg.arn]
|
||||||
}
|
}
|
||||||
|
@ -22,11 +22,11 @@ variable "DEMO_VPC_AVAILABILITY_ZONES" {
|
|||||||
type = list(string)
|
type = list(string)
|
||||||
}
|
}
|
||||||
|
|
||||||
variable "DEMO_VPC_PRIVATE_SUBNET_CIDRS" {
|
variable "DEMO_VPC_PRIVATE_SUBNETS_CIDRS" {
|
||||||
type = list(string)
|
type = list(string)
|
||||||
}
|
}
|
||||||
|
|
||||||
variable "DEMO_VPC_PUBLIC_SUBNET_CIDRS" {
|
variable "DEMO_VPC_PUBLIC_SUBNETS_CIDRS" {
|
||||||
type = list(string)
|
type = list(string)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user