Terraform 기본 개념과 핵심 원리

Terraform 기본 개념과 핵심 원리

1️⃣ 선언형(Declarative) vs 명령형(Imperative) 접근 방식

Terraform은 선언형(Declarative) 방식을 사용하는 인프라 도구입니다.

1 명령형(Imperative) 방식

  • 사용자가 구체적인 작업 절차를 지정합니다.
  • 예: 셸 스크립트, Ansible Task
aws ec2 create-instance --type t2.micro ...
aws ec2 associate-security-group ...

🧩 장점: 유연한 제어
❌ 단점: 상태 추적 어렵고 코드 재사용성 낮음


2 선언형(Declarative) 방식

  • 사용자는 최종 상태(desired state) 만 정의합니다.
  • 실행 순서는 Terraform이 판단하여 자동으로 수행합니다.
resource "aws_instance" "web" {
  ami           = "ami-12345678"
  instance_type = "t2.micro"
}

🧩 장점: 상태 관리 쉬움, 유지보수 효율적
✅ Terraform은 이 방식을 채택합니다!


2️⃣ Terraform 실행 순서 (init, plan, apply, destroy)

Terraform의 기본 실행 흐름은 다음과 같습니다:

📌 Terraform 실행 흐름도

init → plan → apply → destroy

Terraform Flow Diagram

1 terraform init

  • 작업 디렉터리 초기화
  • Provider 다운로드
terraform init

2 terraform plan

  • 현재 상태와 원하는 상태 비교
  • 변경 사항 미리 확인
terraform plan

3 terraform apply

  • 실제 리소스 생성
  • plan 결과 적용
terraform apply

4 terraform destroy

  • 생성한 리소스 삭제
terraform destroy

3️⃣ Terraform 파일 구조 (.tf, .tfvars, .terraform.lock.hcl)

Terraform은 여러 종류의 파일로 구성됩니다.

📁 기본 구조 예시:

project/
├── main.tf
├── variables.tf
├── terraform.tfvars
├── outputs.tf
└── .terraform.lock.hcl

1 .tf 파일

  • Terraform 설정 및 리소스 정의 파일
  • HCL 문법 사용

2 terraform.tfvars

  • 변수에 대한 값을 정의
instance_type = "t2.micro"

3 .terraform.lock.hcl

  • 사용 중인 Provider의 버전 고정
  • 팀 작업 시 동일 환경 유지

4️⃣ HCL(HashiCorp Configuration Language) 문법

Terraform은 HCL이라는 간단하고 사람이 읽기 쉬운 문법을 사용합니다.

resource "aws_instance" "web" {
  ami           = "ami-12345678"
  instance_type = "t2.micro"
  tags = {
    Name = "WebServer"
  }
}

HCL 기본 요소

  • Key = Value 형식
  • 중괄호 {}로 구조화
  • 문자열은 큰따옴표 "

5️⃣ 리소스 블록(Resource Block)과 기본 구성

Terraform에서 가장 기본 단위는 리소스 블록입니다.

1 형식

resource "<PROVIDER>_<TYPE>" "<NAME>" {
  # 리소스 설정
}

2 예제 - AWS EC2 인스턴스

resource "aws_instance" "example" {
  ami           = "ami-0c55b159cbfafe1f0"
  instance_type = "t2.micro"
}
  • "aws_instance": 리소스 타입
  • "example": 로컬 리소스 이름 (참조 시 사용)
  • 블록 내에서는 속성 설정

🎯 정리

항목 설명
선언형 방식 최종 상태만 정의
실행 흐름 init → plan → apply → destroy
파일 구조 .tf, .tfvars, .lock.hcl
문법 HCL 문법
리소스 블록 인프라 정의의 기본 단위

RSS Feed
마지막 수정일자