테라폼 HCL(Terraform HCL)
HCL
- HCL(HashiCorp Configuration Language)은 테라폼에서 사용되는 도메인 특화 언어(Domain-Specific Language)입니다.
- 인프라를 선언적으로 정의할 수 있습니다.
선언 가능한 변수
- string : 문자열
- number : 숫자 값, 소수를 할당 가능
- bool : true or false
- list : 배열
[1, 2, 3]
- map : key-value 쌍으로 이루어진 맵
{ <KEY> : <VALUE>, ... }
- object : key-value 타입을 명시적으로 할당 할 수 있음,
{ <KEY> = <TYPE>, <KEY> = <TYPE>, ... }
- tuple : 여러 요소를 가진 순서 쌍의 나열
(1, "Hello", true)
변수 선언 예시
variable "region" {
type = string
description = "AWS 리전"
default = "us-west-2"
}
variable "instance_count" {
type = number
description = "인스턴스 개수"
default = 3
}
함수 선언 예시
function square(number) number {
return number * number
}
function greet(name) string {
return "Hello, " + name + "!"
}
구성 블록(Configuration Block)
- Terraform 구성 파일에서 인프라스트럭처를 선언하는 데 사용되는 블록
자주 사용되는 구성 블록
-
provider : provider 블록은 Terraform이 사용할 인프라스트럭처 공급자(Provider)를 정의하는 데 사용됩니다. 인프라스트럭처 공급자는 특정 클라우드 서비스 제공자(AWS, Azure 등)와 상호 작용하도록 합니다.
-
resource: resource 블록은 Terraform에서 관리할 인프라스트럭처 리소스를 정의하는 데 사용됩니다. 리소스는 Terraform이 프로비저닝, 업데이트 및 관리하는 대상을 나타냅니다.
-
data: data 블록은 외부 데이터를 가져와 Terraform에서 사용할 수 있도록 합니다. 예를 들어, 클라우드 서비스의 현재 상태를 쿼리하여 데이터를 가져오거나, 외부 파일의 내용을 읽어오는 등의 작업에 사용됩니다.
-
variable: variable 블록은 Terraform 변수를 선언하는 데 사용됩니다. 변수는 구성 파일에서 중복을 줄이고 유연성을 높이는 데 사용되며, 여러 곳에서 동일한 값을 참조할 수 있습니다.
-
output: output 블록은 Terraform이 생성한 리소스나 변수의 값을 출력하는 데 사용됩니다. 이를 통해 Terraform이 관리하는 인프라스트럭처의 현재 상태나 중요한 값들을 사용자에게 제공할 수 있습니다.
-
module: module 블록은 Terraform 모듈을 사용하는 데 사용됩니다. 모듈은 재사용 가능한 Terraform 구성 단위로, 여러 리소스와 변수를 묶어 관리할 수 있습니다.