데브허브 | DEVHUB | How to use Terraform (to become a DevOps engineer)How to use Terraform (to become a DevOps engineer)
- 인프라스트럭처 애즈 코드(IaC)는 코드를 사용하여 클라우드 서비스를 자동 배포하고 관리하는 개념입니다. 💻
- Terraform은 AWS, GCP 등 다양한 클라우드에 인프라를 배포하는 데 사용되는 핵심 IaC 도구입니다. 🛠️
- 기본 사용법은
.tf 파일에 공급자(provider)를 정의하고, aws_s3_bucket과 같은 리소스를 선언하는 것입니다. 📁
terraform init은 작업 디렉토리를 초기화하고 공급자를 다운로드하며, terraform plan은 실제 변경 사항을 미리 보여줍니다. 🧐
terraform apply는 계획된 변경 사항을 클라우드에 적용하여 리소스를 생성하거나 수정합니다. ✅
.tfstate 파일은 Terraform이 배포된 리소스를 추적하고 코드와 비교하여 필요한 변경 사항을 결정하는 데 사용됩니다. 📊
- 대규모 프로젝트에서는 상태 파일을 S3에 원격 저장하고 DynamoDB로 잠금(locking)을 설정하여 동시성 문제를 방지합니다. 🔒
- 리소스는 입력(인수)과 출력(결과)을 가진 함수와 같으며, S3 버킷 버전 관리와 같은 세부 구성을 코드로 정의할 수 있습니다. ⚙️
- Terraform은 리소스 간의 암묵적인 의존성 그래프를 자동으로 파악하여 올바른 생성 순서를 보장합니다. 🔗
- 중요한 주의사항: 특정 속성을 변경하면 Terraform이 리소스를 삭제하고 재생성하여 데이터 손실을 초래할 수 있습니다. ⚠️
prevent_destroy = true와 같은 lifecycle 규칙을 사용하여 중요한 리소스가 실수로 삭제되는 것을 방지할 수 있습니다. 🛡️
environment와 같은 변수를 사용하여 개발, 테스트, 프로덕션 등 다양한 환경에 맞게 리소스를 동적으로 구성할 수 있습니다. 🌍
${var.environment}-my-bucket과 같은 보간법을 사용하여 변수 값을 리소스 이름이나 속성에 삽입할 수 있습니다. 📝