Ssoon

[T101-4주차] 04 테라폼 모듈로 재사용 가능한 인프라 생성하기 - (2) 모듈 입력 본문

Terraform 101 Study

[T101-4주차] 04 테라폼 모듈로 재사용 가능한 인프라 생성하기 - (2) 모듈 입력

구구달스 2022. 11. 10. 01:05
CloudNet@ 팀의 가시다님이 진행하는 Terraform 101 Study 04주차 정리입니다.
 

GitHub - kschoi728/T101: Terraform 101 Study

Terraform 101 Study. Contribute to kschoi728/T101 development by creating an account on GitHub.

github.com

✅ module 에도 input parameter 를 만들 수 있습니다.

 input parameter 를 정의하기 위해  input variables 를 사용합니다.

 

modules/services/webserver-cluster/variable.tfinput 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 한 결과를 확인 할 수 있습니다.

 
Comments