테라폼은 직접 변수의 유형과 값을 입력하는 대신 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 타입의 값들이 들어오는 것을 확인할 수 있습니다.
'[Cloud] > [Terraform]' 카테고리의 다른 글
[Terraform] 프로비저너와 사용자 데이터 (0) | 2024.08.09 |
---|---|
[Terraform] S3에서 상태 파일 업로드, 상태 파일 관리 명령어 (0) | 2024.08.09 |
[Terraform] 테라폼으로 AWS DynamoDB 생성, 업로드(GSI) (0) | 2024.08.08 |
[Terraform] 테라폼 라이프 사이클(create_before_destroy, prevent_destroy) (1) | 2024.08.06 |
[Terraform] 리소스 참조(암묵적 참조, 명시적 참조) (0) | 2024.08.05 |