[기본 구성 요소] HCL(HashiCorp Configuration Language)

2024. 11. 20. 19:38Terraform/[인프런] 아키텍처와 함께하는 Terraform

1. HCL(HashiCorp Configuration Language)

- Terraform과 같은 HashiCorp 제품에서 사용되는 구성 언어이다.
- 사람에게 읽기 쉬운 문법을 제공하고, JSON 형식으로도 변환 가능하다.
- 인프라를 코드로 정의하는 데 최적화되어 있고, 선언적 접근 방식을 지원한다.
==> 즉, 최종 상태를 정의하면 Terraform에서 필요한 단계를 자동으로 계산한다.

 

 

2. HCL 주요 특징

- 사람이 읽기 쉬운 문법 : 직관적이고 간결한 구문
- 모듈화 : 재사용 가능한 모듈을 지원
- 변수와 출력 지원 : 변수, 출력 값, 조건문을 사용해 유연성 제공
- JSON 호환성 
- 선언적 접근 : 원하는 상태 정의하면 Terraform에서 구현

 

 

3. HCL 구성의 주요 요소

- Provider : 클라우드 서비스 또는 리소스의 제공자 정의
- Resource : 실제로 생성하거나 관리할 리소스 정의
- Variable : 재사용성을 높이기 위해 변수로 값 정의
- Output : 생성된 리소스의 값 출력
- Module : 코드를 모듈화하여 재사용성 제공

 

 

4. HCL 예제

- AWS에서 EC2 인스턴스 생성하는 간단한 예제 
* 예제
provider "aws" {                     # AWS를 사용하기 위한 Provider 정의
  region = "us-east-1"            
}

resource "aws_instance" "example" {  # EC2 인스턴스 정의
  ami           = "ami-12345678"     # AMI ID
  instance_type = "t2.micro"         # 인스턴스 타입

  tags = {                           # 태그 사용
    Name = "ExampleInstance"
  }
}