Terraform의 변수: 나의 학습

발행: (2025년 12월 28일 오후 08:41 GMT+9)
3 분 소요
원문: Dev.to

Source: Dev.to

Introduction

Terraform 변수는 구성 전반에 걸쳐 재사용할 수 있는 값을 저장할 수 있게 해줍니다. 변수는 두 가지 종류가 있습니다:

  • 입력 변수 – 구성에 제공하는 값.
  • 출력 변수terraform apply 후에 생성되는 값.

Input Variables

입력 변수는 구성에 매개변수를 지정할 수 있게 해줍니다(예: 인스턴스 유형, 리전, 인스턴스 수).

variable "example" {
  type        = string   # optional
  default     = "value"  # optional
  description = "A description of the variable"
}

Output Variables

출력 변수는 실행 후에 정보를 노출합니다. 예를 들어 EC2 인스턴스의 퍼블릭 IP를 제공할 수 있습니다.

output "example" {
  value       = aws_instance.example.public_ip
  description = "The public IP of the instance"
}

Data Types in Terraform

Terraform은 원시복합 데이터 타입을 지원합니다.

Primitive Data Types

TypeDescription
string임의의 텍스트, 예: "us-east-1"
number정수 또는 부동소수점 값, 예: 2
bool불리언 값 true 또는 false

Complex Data Types

List

동일한 타입의 값을 순서대로 모은 컬렉션.

variable "regions" {
  type    = list(string)
  default = ["ap-south-1", "us-east-1", "us-west-1"]
}

Set

동일한 타입의 고유한 값을 순서 없이 모은 컬렉션.

variable "unique_regions" {
  type    = set(string)
  default = ["ap-south-1", "us-east-1", "us-west-1"]
}

Map

키‑값 쌍으로, 키는 문자열이며 값은 공통 타입을 가집니다.

variable "tags" {
  type = map(string)
  default = {
    name        = "ec2_instance"
    description = "ec2 instance for running the backend"
    env         = "prod"
  }
}

Tuple

고정 길이를 가진 순서가 있는 컬렉션으로, 서로 다른 타입의 값을 포함할 수 있습니다. 튜플은 불변입니다.

variable "network_addresses" {
  type    = tuple([string, string])
  default = ["192.168.1.2", "192.168.1.1"]
}

Object

명명된 속성을 가진 구조화된 타입이며, 각 속성은 서로 다른 타입을 가질 수 있습니다.

variable "user" {
  type = object({
    name  = string
    age   = number
    email = string
  })
  default = {
    name  = "Rohan"
    age   = 20
    email = "rohan@gmail.com"
  }
}

Conclusion

Terraform 변수는 하드코딩된 리터럴을 피하고 모듈 및 리소스 전반에 걸쳐 값을 재사용함으로써 구성을 단순화합니다.

Back to Blog

관련 글

더 보기 »