테라폼 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 구성 단위로, 여러 리소스와 변수를 묶어 관리할 수 있습니다.

참고 문서



Comments:

comments powered by Disqus

results matching ""

    No results matching ""