Contents
기본 타입 (Primitive)
string, number, bool 세 가지로 나뉜다.
- number와 bool은 모두 string으로 변환할 수 있다.
- number 또는 bool 타입의 값을 string 타입의 값에 할당한다면 Terraform이 자동으로 타입을 변환한다.
- 그 반대도 마찬가지임.
- 예를들면 true는 “true”로 변환되고 97은 “97”로 변환된다.
- number 또는 bool 타입의 값을 string 타입의 값에 할당한다면 Terraform이 자동으로 타입을 변환한다.
1️⃣ string
유니코드 문자열 집합을 나타낸다.
형식
"a"
"b"
"shin"
2️⃣ number
정수 또는 소수일 수 있는 숫자를 나타낸다.
형식
1
2
3
3️⃣ bool
참과 거짓을 나타내는 true 또는 false로 표현한다.
- bool은 논리 연산자로 사용할 수 있다.
복합 타입 (Complex)
복합 타입은 값의 집합으로(set of values) 구성된 타입이다.
복합 타입은 총 두가지 유형이 있다.
컬렉션 타입 (Collection)
컬렉션에는 동일한 타입의 값 집합이 포함된다.
- 컬렉션 내의 모든 요소는 반드시 동일한 타입이어야 한다.
- 컬렉션 타입은 모두 와일드카드 타입의 약어를 지원한다.
- list는 list(any)와 동일, map은 map(any)와 동일 ..
1️⃣ list
연속적인 값의 집합이다.
- index는 0부터 시작한다.
- 각 element들에 접근하는 방법은 첨자를 사용한다.
- 선언은 list(number), list(string), list(bool) 등이 될 수 있다.
- 괄호 안의 타입이 요소의 타입이다.
형식
[
"shin",
"seung",
"hyeon"
]
2️⃣ map
고유한 key가 있는 key-value 쌍의 셋트를 나타낸다.
- key는 문자열 타입이어야 한다.
- 만약, map(number)라면 key는 문자열 타입이고 value는 숫자타입이다.
- key 값이 number를 제외하고는 key값의 쌍따옴표를 생략할 수 있다.
- 여러 key-value 쌍의 셋트는 , (쉼표)나 new line (줄바꿈)으로 구분해야 한다.
- Terraform 에서는 : (콜론) 대신 = (equal)을 사용하는걸 추천한다.
형식
{
"a" = "b"
"c" = "d"
}
선언방법
map 타입의 선언 방법은 두 가지 방법이 있다.
- Terraform 공식문서에서는 : (콜론) 대신 = (equal)을 사용하는걸 추천한다.
// 첫번째 방법
{
"a": "b",
"c": "d"
}
// 두번째 방법
{
a="b",
c="d",
}
3️⃣ set
고유한 값의 집합을 나타내는 컬렉션 타입이다.
형식
([
"user1",
"user2",
"user3"
])
구조화된 타입 (Structured)
구조화된 타입은 서로 다른 타입의 여러 값이 단일의 타입을 형성할 수 있다.
- 구조화된 타입은 요소의 구조를 나타내는 매개변수로 스키마 구조 정보를 제공해야 한다.
1️⃣ object
고유한 타입을 갖는 속성 집합의 모음이다.
- object 타입과 일치하는 값은 지정된 key를 모두 포함해야 한다.
- 각 key의 값은 지정한 타입과 일치해야 한다.
형식
// 선언
object({
age=number,
name=string
})
// input
{
age = 27
name = "Shin"
}
// input error #1
{
name = "Shin"
}
// input error #2
{
age = "27"
name = shin
}
2️⃣ tuple
tuple 타입은 list와 같은 연속적인 값의 집합이다.
- 각 요소들은 독립적인 유형을 가진다.
- list와 마찬가지로 element에 접근하기 위해 첨자를 사용하여 접근할 수 있다.
- 마찬가지로 index는 0부터 시작한다.
- tuple의 element 개수는 선언한 타입의 수와 같아야 한다.
- element의 타입은 tuple에 선언한 타입과 동일해야 한다.
형식
// 선언
tuple([
string,
number,
bool
])
// input
[
"Shin",
27,
"true"
]
- Go언어의 구조체 타입과 유사하다.
- 구조체는 다른 타입의 값들을 변수 하나로 묶어주는 기능이다.
요약
타입 종류 | 타입 이름 | 형식 |
기본 | string | "a", "b", "shin" |
number | 1, 2, 3 | |
bool | true, false | |
컬렉션 | map | { a="b" } |
list | [ "shin", "seunghyeon" ] |
|
set | ([ "user1", "user2" ]) |
|
구조화된 | object | { age = 27 name = "Shin" } |
tuple | [ "Shin", 27, true ] |
'Devops > Terraform' 카테고리의 다른 글
[Terraform] Assume Role 기반으로 인증방식 변경하기 (0) | 2023.01.16 |
---|---|
[Terraform] Configuration Syntax (0) | 2022.12.30 |
[Terraform] count와 for_each (Meta-Arguments) (0) | 2022.12.25 |
[Terraform] Terragrunt와 Terraform Cloud(TFC) 연동해보기 (1) | 2022.12.16 |
[Terraform] README.md 작성 자동화 프로그램 ‘Terraform Docs’ 간단소개 (0) | 2022.09.11 |