hgk0404
hgk0404.tistory
hgk0404

공지사항

전체 방문자
오늘
어제
  • 전체 카테고리 N
    • [컴퓨터비전]
    • [Computer Science]
      • [컴퓨터네트워크]
      • [알고리즘]
      • [자료구조 in C]
      • [C & C++]
      • [이산수학]
      • [Math]
    • [머신러닝]
      • [Numpy, Pandas]
    • [Cloud]
      • [AWS]
      • [NCP]
      • [Kubernetes]
      • [Terraform]
    • [Dev] N
      • [가상환경] N
      • [Linux]
      • [Docker]
    • [Python]
    • [Coding Test]
      • [백준]
      • [프로그래머스]
      • [SQL]
    • [WEB]
    • [자격증, 일상]
    • [엑셀]
    • [금융]

인기 글

최근 글

최근 댓글

250x250
hELLO · Designed By 정상우.
hgk0404

hgk0404.tistory

[Cloud]/[Terraform]

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

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
저작자표시 동일조건

'[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
'[Cloud]/[Terraform]' 카테고리의 다른 글
  • [Terraform] S3에서 상태 파일 업로드, 상태 파일 관리 명령어
  • [Terraform] 테라폼으로 AWS DynamoDB 생성, 업로드(GSI)
  • [Terraform] 테라폼 라이프 사이클(create_before_destroy, prevent_destroy)
  • [Terraform] 리소스 참조(암묵적 참조, 명시적 참조)
hgk0404
hgk0404
공부기록

티스토리툴바