728x90
반응형
Staging: Backed server
DB 서버가 열렸으니 be 모듈을 추가해 db 인스턴스도 같이 띄워 보자.
variables.tf
# be module 을 열기위해 필요한 변수들 추가
...
NCP_ACCESS_KEY
NCP_SECRET_KEY
NCP_CONTAINER_REGISTRY
IMAGE_TAG
DJANGO_SETTINGS_MODULE
DJANGO_SECRET_KEY
main.tf
# backend server module
module "be" {
source = "../modules/server"
env = local.env
name = "be"
region = var.region
vpc_id = module.network.vpc_id
subnet_main_id = module.network.subnet_main_id
port_range = local.be_port
init_script_path = "be_init_script.tftpl"
init_script_vars = {
username = var.username
password = var.password
db = "lionforum"
db_port = local.db_port
db_user = var.db_user
db_password = var.db_password
# db 연결에 필요한 db 주소를 모듈에서 가져와 적어준다.
db_host = module.db.public_ip
NCP_ACCESS_KEY = var.NCP_ACCESS_KEY
NCP_SECRET_KEY = var.NCP_SECRET_KEY
NCP_CONTAINER_REGISTRY = var.NCP_CONTAINER_REGISTRY
IMAGE_TAG = var.IMAGE_TAG
DJANGO_SETTINGS_MODULE = var.DJANGO_SETTINGS_MODULE
DJANGO_SECRET_KEY = var.DJANGO_SECRET_KEY
}
}
outputs.tf
# be public ip 출력
...
output "be_public_ip" {
value = module.be.public_ip
}
Loadbalancer
aws 에서는 ncp 와 다르게 loadbalancer 를 위한 구분된 subnet 을 요구하지 않아서 만들어둔 subnet 을 그대로 사용가능하다. 하지만 보안상의 이유로 보통은 구분지어서 빌드하는 것을 권장한다고 한다. 오히려 subnet 을 다르게 지정하게 되면 따로 커넥션을 이어주어야 하는 것으로 보인다.
variables.tf
# 받아서 사용할 변수들 정리
region
env
name
vpc_id
subnet_main_id
instance_id
main.tf
# provider
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
}
# Configure the AWS Provider
provider "aws" {
region = var.region
}
# loadbalancer - network
resource "aws_lb" "be" {
name = "${var.name}-lb-${var.env}"
internal = false
load_balancer_type = "network"
subnets = [ var.subnet_main_id ]
enable_deletion_protection = false
tags = {
Environment = var.env
}
}
# target group
resource "aws_lb_target_group" "be" {
name = "${var.name}-lb-tg-${var.env}"
port = 8000
protocol = "TCP"
vpc_id = var.vpc_id
health_check {
protocol = "TCP"
port = 8000
interval = 30
healthy_threshold = 2
unhealthy_threshold = 2
}
}
# listener
resource "aws_lb_listener" "be" {
load_balancer_arn = aws_lb.be.arn
port = "80"
protocol = "TCP"
default_action {
type = "forward"
target_group_arn = aws_lb_target_group.be.arn
}
}
# group attachment
resource "aws_lb_target_group_attachment" "be" {
target_group_arn = aws_lb_target_group.be.arn
target_id = var.instance_id
port = 8000
}
outputs.tf
# dns 주소
output "lb_dns" {
value = aws_lb.be.dns_name
}
로드 벨런서까지 연결된 이후 인프라 구축을 실행시키면,
728x90
반응형
'Dev. > Terraform' 카테고리의 다른 글
Terraform: nks resource (0) | 2023.09.23 |
---|---|
Terraform: AWS ssh connection (0) | 2023.09.09 |
Terraform: AWS 서버구축 (0) | 2023.09.08 |
Terraform: Status 가 꼬이는 현상 (0) | 2023.09.07 |
Terraform: Separating (0) | 2023.09.06 |
댓글