Ssoon
[T101-4주차] 04 테라폼 모듈로 재사용 가능한 인프라 생성하기 - (2) 모듈 입력 본문
CloudNet@ 팀의 가시다님이 진행하는 Terraform 101 Study 04주차 정리입니다.
✅ module 에도 input parameter 를 만들 수 있습니다.
✅ input parameter 를 정의하기 위해 input variables 를 사용합니다.
⛔ modules/services/webserver-cluster/variable.tf 에 input variables 를 생성합니다.
variable "cluster_name"
variable "cluster_name" {
description = "The name to use for all the cluster resources"
type = string
}
⛔ modules/services/webserver-cluster/main.tf 에서 "name" 값을 앞서 생성한 input variables 를 이용해 정의합니다.
${var.cluster_name}
resource "aws_security_group" "ssoon_sg" {
vpc_id = aws_vpc.ssoon_vpc.id
name = "${var.cluster_name}-SG"
}
⛔ stage/services/webserver-cluster/main.tf 에서 module 에 정의된 input variable 를 사용하여 설정합니다.
cluster_name = "ssoon-stage"
module "webserver_cluster" {
source = "../../../modules/services/webserver-cluster"
cluster_name = "ssoon-stage"
}
❗ input variable 는 module 의 API이며 다른 환경에서 작동하는 방식을 제어합니다.
stage 와 prod 환경에서 다른 웹 서버 클러스터를 실행하기 위해 instance_type / main_size / max_size input variable 3개를 추가합니다.
⛔ modules/services/webserver-cluster/variable.tf
variable "instance_type"
variable "min_size"
variable "max_size"
variable "instance_type" {
description = "the type of ec2 instance to run"
type = string
}
variable "min_size" {
description = "the minimum number of ec2 instance in the ASG"
type = number
}
variable "max_size" {
description = "the maximum number of ec2 instance in the ASG"
type = number
}
instance_type / main_size / max_size input variable 을 사용하기 위해 main.tf 에 관련 내용들은 변경합니다.
⛔ modules/services/webserver-cluster/main.tf
var.instance_type
resource "aws_launch_configuration" "ssoon_lauchconfig" {
name_prefix = "ssoon_lauchconfig-"
image_id = data.aws_ami.amazonlinux2.id
instance_type = var.instance_type
security_groups = [aws_security_group.ssoon_sg.id]
associate_public_ip_address = true
var.min_size
var.max_size
resource "aws_autoscaling_group" "ssoon_asg" {
name = "ssoon_asg"
launch_configuration = aws_launch_configuration.ssoon_lauchconfig.name
vpc_zone_identifier = [aws_subnet.ssoon_subnet1.id, aws_subnet.ssoon_subnet2.id]
min_size = var.min_size
max_size = var.max_size
instance_type / main_size / max_size input variable 을 이용 stage 환경에서 instance_type 을 t2.mirco , min_size 와 max_size 를 2 로 설정합니다.
⛔ stage/services/webserver-cluster/main.tf
instance_type = "t2.micro"
main_size = 2
max_size =2
module "webserver_cluster" {
source = "../../../modules/services/webserver-cluster"
cluster_name = "ssoon-stage"
instance_type = "t2.micro"
min_size = 2
max_size = 2
}
🚩 Console 확인
module 에서 선언한 input variable 을 이용 stage 에서 해당 값을 설정하여 apply 한 결과를 확인 할 수 있습니다.
'Terraform 101 Study' 카테고리의 다른 글
[T101-4주차] 04 테라폼 모듈로 재사용 가능한 인프라 생성하기 - (4) 모듈 출력 (0) | 2022.11.13 |
---|---|
[T101-4주차] 04 테라폼 모듈로 재사용 가능한 인프라 생성하기 - (3) 모듈과 지역변수 (0) | 2022.11.13 |
[T101-4주차] 04 테라폼 모듈로 재사용 가능한 인프라 생성하기 - (1) 모듈의 기본 (0) | 2022.11.09 |
[T101-3주차] 03 테라폼 상태 관리하기 - (5) terraform_remote_state 데이터 소스 (0) | 2022.11.05 |
[T101-3주차] 03 테라폼 상태 관리하기 - (4) 상태파일격리 - 파일 레이아웃을 이용한 격리 (0) | 2022.11.01 |
Comments