인프라 자동화를 위한 Terraform 도입: ClickOps의 종말
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
DevOps
대상자
- 중급 이상의 개발자 및 DevOps 엔지니어
- 수동 인프라 관리나 쉘 스크립트 사용으로 어려움을 겪는 사람들
- Terraform을 통해 인프라 코드화를 학습하고자 하는 사람들
핵심 요약
- Terraform은 인프라를 코드로 관리하는 선언형 도구로, AWS, GCP, Azure 등 주요 클라우드 제공업체를 지원
- HashiCorp에서 개발한 Infra as Code 도구로, Nomad, Vault, Consul과 같은 HashiStack과 호환 가능
terraform apply
명령어로 한 번의 실행으로 클라우드 인프라를 자동 생성/업데이트 가능- State 파일을 통해 현재 인프라 상태와 코드의 차이를 자동으로 비교/적용
섹션별 세부 요약
1. 인프라 자동화 필요성
- ClickOps(클릭으로 인프라 생성) 또는 쉘 스크립트 사용으로 인한 관리 비용 증가 및 오류 가능성
- Terraform 도입으로 인프라 재사용성, 일관성, 버전 관리 가능
- HashiCorp의 HashiStack(Consul, Vault, Nomad)과의 호환성으로 생태계 통합이 용이
2. Terraform의 핵심 기능
- 선언형 구성 파일(.tf)을 통해 원하는 인프라 상태 정의
- 모든 변경 사항을 Git으로 추적 가능 (코드 리뷰, 롤백, PR 생성)
terraform apply
명령어로 환경 간 일관된 인프라 배포- State 파일을 통해 현재 인프라 상태와 코드 간 차이를 자동 비교
3. Docker 기반 예제 실행
- Linux Mint 환경에서 Terraform 설치
sudo apt-get install terraform
명령어 사용- Docker 예제 구성 파일 작성
main.tf
파일에docker_image
및docker_container
리소스 정의terraform init
→terraform apply
→terraform destroy
단계로 인프라 생성 및 삭제 가능
4. GCP 이전 및 확장성
- 현재 AWS EC2에서 GCP로 이전 계획
- VPC, VM, Nomad/Consul/Vault 구성 및 Terraform 모듈 사용으로 리소스 관리 효율화
terraform apply
명령어로 모든 인프라 재구성 가능
결론
- Terraform은 인프라 자동화의 핵심 도구로, 수동 인프라 관리 및 쉘 스크립트 사용을 대체
- 초기에는 Docker 예제부터 시작하여 GCP 등 클라우드 리소스로 확장 권장
- LiveAPI와 같은 API 문서화 도구와의 결합으로 DevOps 워크플로우 효율화 가능