AWS ECR 레포지토리
-- > Private
-- >URI
복사
(생략)
variable "ecr_image_api" {
description = "ECR image for API"
default = "URI 입력하기:latest"
}
variable "ecr_image_proxy" {
description = "ECR image for proxy"
default = "URI 입력하기:latest"
}
variable "django_secret_key" {
description = "Secret key for Django app"
}
:latest
태그를 URI 바로 뒤에 입력했다.
초기 프로젝트 셋팅시, 가장 최신의 이미지에
latest태그가 입력될 수 있도록 설정했기 때문.
장고 settings.py의 시크릿 키 default는 입력하진 않을 것이다.
(description만 넣음)
로컬환경
다른 개발자가 로컬환경에서 서버를 run할 때,
django 시크릿 키 값을 입력해야 함을 인지할 수 있도록
sample.tfvars 하단에 내용을 추가한다.
db_username = "recipeapp"
db_password = "changeme"
django_secret_key = "changeme"
로컬환경
마찬가지로 django 시크릿 키 내용을 추가한다.
db_username = "recipeapp"
db_password = "changeme"
django_secret_key = "changeme"
data "template_file" "api_container_definitions" {
template = file("./templates/ecs/container-definitions.json.tpl")
vars = {
app_image = var.ecr_image_api
proxy_image = var.ecr_image_proxy
django_secret_key = var.django_secret_key
db_host = aws_db_instance.main.address
db_name = aws_db_instance.main.name
db_user = aws_db_instance.main.username
db_pass = aws_db_instance.main.password
log_group_name = aws_cloudwatch_log_group.ecs_task_logs.name
log_group_region = data.aws_region.current.name
allowed_hosts = "*"
}
}
resource "aws_ecs_task_definition" "api" {
family = "${local.prefix}-api"
container_definitions = data.template_file.api_container_definitions.rendered
requires_compatibilities = ["FARGATE"]
network_mode = "awsvpc"
cpu = 256
memory = 512
execution_role_arn = aws_iam_role.task_execution_role.arn
task_role_arn = aws_iam_role.app_iam_role.arn
volume = {
name = "static"
}
tags = local.common_tags
}
family
는 식별자로써, ecs의 유니크한 "작업 정의" 이름이다.
.rendered
는 예를 들어, db_host = aws_db_instance.main.address 에서
우측 value값을 실제로 불러오는 것이다.
terraform 출처: https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_task_definition
docker-compose -f deploy/docker-compose.yml run --rm terraform init
templates 및 ecs 등 인프라의 변화가 생겼기 때문에
terraform으로 반영을 시켜준다.(초기화 진행)
docker-compose -f deploy/docker-compose.yml run --rm terraform fmt
docker-compose -f deploy/docker-compose.yml run --rm terraform validate
docker-compose -f deploy/docker-compose.yml run --rm terraform plan
Key에는 TF_VAR_django_secret_key
를 추가해준다.
Value에는 문자 및 숫자를 포함한 무작위 문자열
을 입력한다.