1. Terraform 변수
terraform 은 대규모 프로비저닝 관리를 위해 변수
를 지원해준다. 변수는 어떻게 구성되어 있고, 어떻게 사용하는지 알아보자
1.1 Terraform 변수의 구성
변수는 3개의 argument 로 구성된다.
- default: 변수의 기본 값을 지정한다.
- type: 변수의 타입 을 지정한다.
- description: 변수에 대한 메타데이터를 지정한다.
아래와 같이 변수를 만들 수 있다.
variable "filename" {
default = "pets.txt"
type = string
description = "name of file"
}
variable "length" {
default = 2
type = number
description = "length of ..."
}
1.2 Terraform 변수 타입
Terraform은 인프라를 코드로 관리하기 위해 다양한 데이터 타입을 지원한다. 이러한 타입을 이해하면 효율적인 인프라 정의와 관리를 할 수 있다.
1.2.1. 기본 타입 (Primitive Types):
- 문자열 (string): 유니코드 문자들의 시퀀스로, 예를 들어 "hello"와 같다.
- 숫자 (number): 정수와 부동소수점을 모두 포함하며, 예를 들어 15나 6.283185 등이 있다.
- 불리언 (bool): 참(true) 또는 거짓(false) 값을 가지며, 조건문 등에 사용된다.
1.2.2. 복합 타입 (Complex Types):
복합 타입은 collection type 과 structural type 으로 구분지을 수 있다.
collection type 에는 list, map, set 이 있고 structural type 에는 object 와 tuple 타입이 있다.
리스트 (list)
동일한 타입의 값들이 순서대로 나열된 시퀀스이다. 예를 들어, ["us-west-1a", "us-west-1c"] 가 있다.
list 를 이용하는 방법은 다음과 같다.
맵 (map)
키-값 쌍으로 이루어진 집합으로, 각 키는 고유해야 한다. 예를 들어, {"name" = "Mabel", "age" = 52} 가 있다.
셋 (set)
고유한 값들의 집합으로, 순서가 없으며 중복을 허용하지 않는다.
그런데 set 타입으로 만든 변수는 이를 수용할 수 있는 argument 가 특정되어 있다.
이떄 string 타입을 가져오기 위해서는 다양한 방법을 사용할 수 있는데, 아래는 그 예시 3개를 보여준다.
객체(Object), 튜플(Tuple)
3. 특수 타입:
- null: 값의 부재를 나타내며, 리소스의 특정 속성을 생략하고자 할 때 사용된다.
1.3 Terraform 변수 적용
variable 블록을 기존과 같이 resource 가 선언된 블록에서 같이 관리해도 된다. 하지만 동일 작업공간에서 terraform 은 .tf 파일을 모두 읽어들여서 작업을 진행하므로 굳이 둘을 하나의 파일에서 관리하지 말고 main.tf 와 variable.tf 로 나눠보도록 하자
- main.tf: 리소스를 정의하는 테라폼 파일
- variable.tf: 리소스에서 사용할 변수를 정의하는 테라폼 파일
HCL 기본기에서 다뤘듯이 argument 에 expression 을 대입할 수 있다.
그리고 terraform init > terraform paln > terraform apply 순서로 돌리면 작업공간에 pets.txt 가 생성되면서 랜덤한 문자열이 생성된다.
1.4 Terraform 변수 관리
그렇다면 이제는 variable 의 내용만 바꾸면 변경 사항을 반영할 수 있지 않을까?
terraform paln > terraform apply 를 한 결과 기존 작업공간에 있던 pets.txt 는 사라지고 pets2.txt 가 생성되었다. 그리고 그 내용도 랜덤 변수 3개가 생성되는 것으로 바뀌었다.
'기초 지식 > Terraform' 카테고리의 다른 글
Terraform 기초: 리소스 만들어보기 (0) | 2024.11.18 |
---|