Terraform

Kkd·2025년 3월 13일

AWS

목록 보기
9/11

🚀 Terraform(테라폼)

Terraform(테라폼)은 Infrastructure as Code(IaC) 도구로, AWS, Azure, Google Cloud 등 다양한 클라우드 환경에서 인프라를 코드로 관리할 수 있게 도와줍니다. HashiCorp에서 개발했으며, HCL(HashiCorp Configuration Language)이라는 직관적인 언어를 사용합니다.


📌 Terraform의 주요 개념

1️⃣ Infrastructure as Code (IaC)

  • Terraform을 사용하면 인프라를 코드로 정의하여 자동화 및 버전 관리를 할 수 있습니다.
  • 코드 기반으로 인프라를 배포하고, 필요할 때 변경 또는 삭제할 수 있습니다.

2️⃣ 선언형(Declarative) 접근 방식

  • Terraform은 "무엇을 배포할 것인가?"를 정의하는 선언형 방식입니다.
  • 사용자는 리소스 상태를 정의하고, Terraform이 자동으로 이를 적용합니다.

3️⃣ 다양한 클라우드 지원

  • AWS, Azure, GCP, Kubernetes, OCI, DigitalOcean 등 대부분의 클라우드 플랫폼을 지원합니다.
  • 멀티 클라우드 환경에서도 하나의 코드로 관리가 가능합니다.

🛠 Terraform 설치

Terraform은 Windows, macOS, Linux에서 사용할 수 있습니다.

🔹 Windows 설치

  1. Terraform 공식 다운로드에서 Windows용 바이너리 다운로드
  2. 압축 해제 후 실행 파일을 시스템 PATH에 추가
  3. 설치 확인:
    terraform --version

🔹 macOS 설치 (Homebrew 이용)

brew tap hashicorp/tap
brew install hashicorp/tap/terraform
terraform --version

🔹 Linux 설치

curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
sudo apt-get update && sudo apt-get install terraform
terraform --version

📌 Terraform 기본 사용법

Terraform을 사용하여 AWS 인프라를 구축하는 과정을 살펴보겠습니다.

1️⃣ Terraform 프로젝트 초기화

Terraform은 .tf 확장자를 가진 파일을 사용하여 인프라를 정의합니다.

mkdir terraform-project
cd terraform-project

이제 main.tf 파일을 생성하여 Terraform 코드 작성할 준비를 합니다.


🔹 Terraform 파일 구조 예시

Terraform 프로젝트의 기본 파일 구조는 다음과 같습니다.

terraform-project/
│── main.tf          # 주요 Terraform 설정 파일
│── variables.tf     # 변수 설정 파일
│── outputs.tf       # 출력값 설정 파일
│── terraform.tfstate # 현재 인프라 상태 정보 (자동 생성됨)

2️⃣ Terraform 코드 작성 (main.tf)

AWS에서 EC2 인스턴스를 생성하는 Terraform 예제입니다.

provider "aws" {
  region = "ap-northeast-2" # 서울 리전
}

resource "aws_instance" "my_ec2" {
  ami           = "ami-0c55b159cbfafe1f0" # Amazon Linux 2 AMI
  instance_type = "t2.micro"
  
  tags = {
    Name = "Terraform-EC2"
  }
}

3️⃣ Terraform 명령어 실행

Terraform을 실행하여 인프라를 구축하는 과정입니다.

🔹 1. Terraform 초기화

Terraform을 사용하기 전에 terraform init 명령어를 실행하여 필요한 플러그인을 다운로드합니다.

terraform init

🔹 2. Terraform 실행 계획 확인

Terraform은 변경 사항을 미리 확인할 수 있도록 plan 명령어를 제공합니다.

terraform plan

출력 예시:

Plan: 1 to add, 0 to change, 0 to destroy.

🔹 3. Terraform 적용 (배포)

계획이 올바르면 apply 명령어를 사용하여 실제 AWS에 적용합니다.

terraform apply

적용할지 묻는 메시지가 표시되면 yes 입력.

🔹 4. 배포된 리소스 확인

aws ec2 describe-instances --query "Reservations[*].Instances[*].InstanceId"

4️⃣ Terraform으로 리소스 삭제

Terraform은 배포한 리소스를 손쉽게 삭제할 수 있습니다.

terraform destroy

적용할지 묻는 메시지가 표시되면 yes 입력.


🚀 Terraform의 장점

장점설명
자동화인프라를 코드로 관리하여 반복적인 수작업을 줄일 수 있음
버전 관리Git과 같은 버전 관리 시스템을 통해 변경 사항을 추적 가능
멀티 클라우드 지원AWS, Azure, GCP 등 다양한 클라우드 환경을 하나의 코드로 관리
안전한 배포terraform plan을 통해 배포 전에 변경 사항 미리 확인 가능
모듈화 가능여러 개의 모듈을 만들어 인프라를 재사용 가능

Terraform과 AWS CLI 비교

비교 항목AWS CLITerraform
방식명령어 기반선언형 코드 기반
사용 목적개별 리소스 관리전체 인프라 관리
자동화스크립트 필요코드 자체에서 가능
멀티 클라우드AWS 전용AWS, Azure, GCP 모두 지원

AWS CLI는 개별 리소스를 관리할 때 유용
Terraform은 전체 인프라를 코드로 관리할 때 유용


📝 Terraform 사용 정리

Terraform은 코드로 인프라를 관리하는 IaC 도구
AWS, Azure, GCP 등 다양한 클라우드 환경 지원
terraform init → plan → apply → destroy 순서로 동작
main.tf에 선언형 코드 작성하여 인프라 자동화
✅ 인프라 변경 사항을 미리 확인 후 안전하게 적용 가능


추가 학습 자료

profile
🌱

0개의 댓글