Terraform(테라폼)은 Infrastructure as Code(IaC) 도구로, AWS, Azure, Google Cloud 등 다양한 클라우드 환경에서 인프라를 코드로 관리할 수 있게 도와줍니다. HashiCorp에서 개발했으며, HCL(HashiCorp Configuration Language)이라는 직관적인 언어를 사용합니다.
Terraform은 Windows, macOS, Linux에서 사용할 수 있습니다.
PATH에 추가terraform --versionbrew tap hashicorp/tap
brew install hashicorp/tap/terraform
terraform --version
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을 사용하여 AWS 인프라를 구축하는 과정을 살펴보겠습니다.
Terraform은 .tf 확장자를 가진 파일을 사용하여 인프라를 정의합니다.
mkdir terraform-project
cd terraform-project
이제 main.tf 파일을 생성하여 Terraform 코드 작성할 준비를 합니다.
Terraform 프로젝트의 기본 파일 구조는 다음과 같습니다.
terraform-project/
│── main.tf # 주요 Terraform 설정 파일
│── variables.tf # 변수 설정 파일
│── outputs.tf # 출력값 설정 파일
│── terraform.tfstate # 현재 인프라 상태 정보 (자동 생성됨)
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"
}
}
Terraform을 실행하여 인프라를 구축하는 과정입니다.
Terraform을 사용하기 전에 terraform init 명령어를 실행하여 필요한 플러그인을 다운로드합니다.
terraform init
Terraform은 변경 사항을 미리 확인할 수 있도록 plan 명령어를 제공합니다.
terraform plan
출력 예시:
Plan: 1 to add, 0 to change, 0 to destroy.
계획이 올바르면 apply 명령어를 사용하여 실제 AWS에 적용합니다.
terraform apply
적용할지 묻는 메시지가 표시되면 yes 입력.
aws ec2 describe-instances --query "Reservations[*].Instances[*].InstanceId"
Terraform은 배포한 리소스를 손쉽게 삭제할 수 있습니다.
terraform destroy
적용할지 묻는 메시지가 표시되면 yes 입력.
| 장점 | 설명 |
|---|---|
| 자동화 | 인프라를 코드로 관리하여 반복적인 수작업을 줄일 수 있음 |
| 버전 관리 | Git과 같은 버전 관리 시스템을 통해 변경 사항을 추적 가능 |
| 멀티 클라우드 지원 | AWS, Azure, GCP 등 다양한 클라우드 환경을 하나의 코드로 관리 |
| 안전한 배포 | terraform plan을 통해 배포 전에 변경 사항 미리 확인 가능 |
| 모듈화 가능 | 여러 개의 모듈을 만들어 인프라를 재사용 가능 |
| 비교 항목 | AWS CLI | Terraform |
|---|---|---|
| 방식 | 명령어 기반 | 선언형 코드 기반 |
| 사용 목적 | 개별 리소스 관리 | 전체 인프라 관리 |
| 자동화 | 스크립트 필요 | 코드 자체에서 가능 |
| 멀티 클라우드 | AWS 전용 | AWS, Azure, GCP 모두 지원 |
✅ AWS CLI는 개별 리소스를 관리할 때 유용
✅ Terraform은 전체 인프라를 코드로 관리할 때 유용
✅ Terraform은 코드로 인프라를 관리하는 IaC 도구
✅ AWS, Azure, GCP 등 다양한 클라우드 환경 지원
✅ terraform init → plan → apply → destroy 순서로 동작
✅ main.tf에 선언형 코드 작성하여 인프라 자동화
✅ 인프라 변경 사항을 미리 확인 후 안전하게 적용 가능
추가 학습 자료