Terraform의 변수: 나의 학습
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
| Type | Description |
|---|---|
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 변수는 하드코딩된 리터럴을 피하고 모듈 및 리소스 전반에 걸쳐 값을 재사용함으로써 구성을 단순화합니다.