Terraform이란?
인프라(서버, 네트워크, DB 등)를 코드(.tf 파일)로 선언하고, terraform apply 한 번으로 실제 클라우드 리소스를 생성·수정·삭제합니다. AWS, GCP, Azure, Kubernetes 등 모두 지원합니다.
설치
# Ubuntu/Debian
wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor \
| sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] \
https://apt.releases.hashicorp.com $(lsb_release -cs) main" \
| sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update && sudo apt install terraform
terraform version기본 구조
my-infra/
├── main.tf # 리소스 정의
├── variables.tf # 입력 변수
├── outputs.tf # 출력 값
├── providers.tf # 프로바이더 설정
└── terraform.tfvars # 변수 값 (git 제외)AWS EC2 예시
providers.tf
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
}
provider "aws" {
region = var.region
}main.tf
data "aws_ami" "ubuntu" {
most_recent = true
owners = ["099720109477"]
filter {
name = "name"
values = ["ubuntu/images/hvm-ssd/ubuntu-*-22.04-amd64-server-*"]
}
}
resource "aws_instance" "web" {
ami = data.aws_ami.ubuntu.id
instance_type = var.instance_type
tags = {
Name = "web-server"
Environment = "production"
}
}outputs.tf
output "instance_public_ip" {
value = aws_instance.web.public_ip
}워크플로우
# 초기화 (프로바이더 다운로드)
terraform init
# 실행 계획 확인 (실제로 뭐가 생성/변경/삭제되는지)
terraform plan
# 적용
terraform apply
# 특정 리소스만 적용
terraform apply -target=aws_instance.web
# 모두 삭제
terraform destroy
# 현재 상태 확인
terraform show
terraform state list원격 상태 관리 (팀 협업)
# backend.tf
terraform {
backend "s3" {
bucket = "my-terraform-state"
key = "prod/terraform.tfstate"
region = "ap-northeast-2"
encrypt = true
dynamodb_table = "terraform-lock"
}
}상태 파일(terraform.tfstate)은 반드시 원격 저장소(S3 + DynamoDB 잠금)로 관리하세요. git에 커밋하면 절대 안 됩니다.
이 가이드는 AI 도구를 활용해 초안을 구성하고 사람이 명령어·문맥을 검토해 발행했습니다. 운영체제와 도구 버전에 따라 결과가 달라질 수 있으므로 적용 전 공식 문서를 함께 확인하세요. 오류를 발견하시면 이메일로 제보해 주세요.
질문 & 답변 (Q&A)
이 가이드에 대해 궁금한 점을 질문해보세요. 확인 후 답변드립니다.