Ssoon
[T101-4주차] 04 테라폼 모듈로 재사용 가능한 인프라 생성하기 - (4) 모듈 출력 본문
CloudNet@ 팀의 가시다님이 진행하는 Terraform 101 Study 04주차 정리입니다.
✅ 예제 테라폼 코드에 정의되어 있는 ASG는 실행 중인 서버의 수를 예약된 시간에 확장 및 축소를 지원합니다.
✅ webserver-cluster module 에 예약된 작업을 사용해 조건부로 리소스를 정의 할 수 있습니다.
🔑 책에는 prod 환경에만 적용하기 위해 prod/services/webserver-cluster/main.tf 에만 적용하였지만 여기서는 stage module 에 적용합니다.
"scale_out_during_business_hours"
recurrence : 0 9 * * * -> 매일 오전 9시에
desire_capacity : 4 -> 서버 수를 4개로
"scale_in_at_night"
recurrence : 0 17 * * * -> 매일 오후 5시에
desire_capacity : 2 -> 서버 수를 2개로
#! # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#! ASG Schedule 설정
#! # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
resource "aws_autoscaling_schedule" "scale_out_during_business_hours" {
scheduled_action_name = "scale-out-during-business-hours"
min_size = 2
max_size = 4
desired_capacity = 4
recurrence = "0 9 * * *"
}
resource "aws_autoscaling_schedule" "scale_in_at_night" {
scheduled_action_name = "scale-in-at-night"
min_size = 2
max_size = 4
desired_capacity = 2
recurrence = "0 17 * * *"
}
❗ ASG 의 이름을 지정하는 필수 매개변수 (required parameter) 값인 "autoscaling_group_name" 이 누락되어 있습니다.
📌 module 에서도 출력변수 (output variables) 를 사용하여 값을 반환할 수 있습니다.
⛔ modules/services/webserver-cluster/outputs.tf
👉 출력변수를 추가합니다.
output "asg_name"
output "asg_name" {
value = aws_autoscaling_group.ssoon_asg.name
description = "the name of the auto scaling group"
}
✔ 다음 구문을 사용하여 출력변수 (output variables) 에 액세스할 수 있습니다.
module.<MODULE_NAME>.<OUTPUT_NAME>
⛔ stage/services/webserver-cluster/main.tf
👉 출력변수 (output variables) 를 사용하여 "autoscaling_group_name" 을 정의합니다.
module "webserver_cluster" {
source = "../../../modules/services/webserver-cluster"
autoscaling_group_name = module.webserver_cluster.asg_name
resource "aws_autoscaling_schedule" "scale_out_during_business_hours" {
scheduled_action_name = "scale-out-during-business-hours"
min_size = 2
max_size = 4
desired_capacity = 4
recurrence = "0 9 * * *"
autoscaling_group_name = module.webserver_cluster.asg_name
}
resource "aws_autoscaling_schedule" "scale_in_at_night" {
scheduled_action_name = "scale-in-at-night"
min_size = 2
max_size = 4
desired_capacity = 2
recurrence = "0 17 * * *"
autoscaling_group_name = module.webserver_cluster.asg_name
}
⛔ modules/services/webserver-cluster/outputs.tf
👉 클러스터가 배포될 때 URL 을 알 수 있도록 출력변수 (output variables) 을 추가합니다.
output "alb_dns_name"
output "alb_dns_name" {
value = aws_lb.ssoon_alb.alb_dns_name
description = "the domain name of the load balancer"
}
⛔ stage/services/webserver-cluster/outputs.tf
👉 module 에서 설정한 출력변수 (output variables) 가 stage 에서 통과 (pass through) 할수 있도록 설정합니다.
module "webserver_cluster" {
source = "../../../modules/services/webserver-cluster"
module.webserver_cluster.alb_dns_name
output "alb_dns_name" {
value = module.webserver_cluster.alb_dns_name
description = "the domain name of the load balancer"
}
🚩 Console 확인
📢 CLI 확인
'Terraform 101 Study' 카테고리의 다른 글
[5주차] 05 테라폼의 팁과 요령 (1) 반복문 - count (0) | 2022.11.14 |
---|---|
[T101-4주차] 04 테라폼 모듈로 재사용 가능한 인프라 생성하기 - (5) 모듈주의사항 (0) | 2022.11.13 |
[T101-4주차] 04 테라폼 모듈로 재사용 가능한 인프라 생성하기 - (3) 모듈과 지역변수 (0) | 2022.11.13 |
[T101-4주차] 04 테라폼 모듈로 재사용 가능한 인프라 생성하기 - (2) 모듈 입력 (0) | 2022.11.10 |
[T101-4주차] 04 테라폼 모듈로 재사용 가능한 인프라 생성하기 - (1) 모듈의 기본 (0) | 2022.11.09 |
Comments