[Cloud]/[Terraform]

[Terraform] 테라폼 변수 타입 종류

hgk0404 2024. 8. 5. 11:26
728x90

 

테라폼은 직접 변수의 유형과 값을 입력하는 대신 variable 타입을 만들어 구성 요소의 값을 채워넣을 수 있습니다.

 

 

1. 기본 변수 유형(문자열, 숫자, bool)

 

 

테라폼 기본 변수 유형은 문자열, 숫자, bool이 있습니다. 

 

 

# 문자열 변수
variable "prefix" {
  default = "Mrs"
  type = string
  description = "the prefix to be set"
}

 

 

기본값과, 타입, 그리고 내용을 적어서 사용할 수 있습니다.

 

 

# 숫자형 변수
variable "length" {
  default = "1"
  type = number
  description = "the path of local file"
}

 

 

변수의 값을 변경하고 싶을 때에는 defualt = "2" 이렇게 변경한 뒤 terraform apply 명령어를 입력하면 됩니다.

 

 

# bool 타입 변수
variable "password_change" {
  default = true
  type = bool
}

 

 

2. list, map, set, object, tuple

 

 

1. list타입 변수

 

 

리스트는 인덱스로 구분하고 인덱스의 시작은 0부터 시작됩니다. 

# 문자열로 이루어진 리스트
variable "prefix" {
  default = ["Mr", "Mrs", "Sir"]
  type = list(string)
}

 

 

인덱스 0번이 "Mr", 1번이 "Mrs", 2번이 "Sir"가 됩니다.

 

 

# 정수로 이루어진 리스트
variable "prefix2" {
  default = [ 1, 2, 3 ]
  type = list(number)
}

 

 

resource "random_pet" "my-pet" {
  prefix = var.prefix2[0]
}

 

테라폼 구성 파일에서 이렇게 사용해서 인덱스 0의 요소 "1"을 가져올 수 있습니다.

 

 

하지만 지정된 타입과 리스트의 속성이 다르면 오류를 출력합니다.

 

 

2. map 타입 변수

 

 

키-값 쌍 형식의 데이터 표시로 다음과 같이 사용됩니다.

 

 

# 문자열로 이루어진 map
variable "cats" {
  default = {
    "color" = "brown"
    "name" = "bella"
  }
  type = map(string)
}

 

 

사용할 때는 다음과 같습니다.

resource "local_file" "my-pet" {
  filename = "/root/pets.txt"
  content = var.cats["name"]
}

 

 

# 정수로 이루어진 map
variable "pet_count" {
  default = {
    "dogs" = 3
    "cats" = 1
    "goldfish" = 2
  }
  type = map(number)
}

 

 

3. set 타입의 변수

 

 

set는 list와 비슷합니다. 하지만 중복을 허락하지 않으며 중복되는 값이 들어간다면 오류를 출력합니다. 그리고 파이썬의 set처럼 요소들의 순서도 중요하지 않습니다.

 

 

variable "fruit" {
  default = [ "apple", "banana" ]
  type = set(string)
}

 

 

# 중복된 값을 입력해서 오류를 출력하는 set
variable "fruit_false" {
  default = [ "apple", "banana", "banana" ]
  type = set(string)
}

 

 

4. object 타입의 변수

 

 

오브젝트(개체)는 모든 변수 타입을 조합해서 복잡한 데이터 구조를 만들 수 있습니다. 

 

 

variable "bella" {
  type = object({
    name = string
    color = string
    age = number
    food = list(string)
    favorite_pet = bool
  })
}

 

 

고양이 bella의 이름과 색상은 문자열, 나이는 정수, 음식 리스트는 문자열 리스트이며 가장 좋아하는 동물 여부는 bool로 구성할 수 있습니다. 

 

 

5. tuple 타입의 변수

 

 

마지막으로 튜플은 서로 다른 타입의 값들을 순서대로 나열한 컬렉션입니다.

 

 

variable "kitty" {
  type = tuple([ string, number, bool ])
  default = [ "cat", 7, true ]
}

 

 

순서대로 문자열, 정수, bool 타입의 값들이 들어오는 것을 확인할 수 있습니다.

 

 

728x90