AWS 인프라를 Terraform으로 관리하고,
GitHub Actions와 Discord 명령어를 통해 인프라를 제어하는 것을 목표로 합니다.
Sandbox(개발) 환경과 Production 환경을 분리하여 운영하며,
Terraform Plan / Apply를 GitHub Actions로 자동화하여
안전한 변경 검증 → 수동 승인 적용 흐름을 구성했습니다.
- Discord Bot
- Sandbox 인프라 시작 / 종료 / 상태 확인
- AWS Infrastructure
- EC2, RDS 등 서비스 운영 인프라 관리
- Terraform IaC
- 코드 기반 인프라 관리
- GitHub Actions
- PR 시 Terraform Plan 자동 실행
- 승인 후 Terraform Apply 수동 실행
- 환경 분리
- Sandbox / Production 독립 운영
- 비용 절감
- Sandbox 환경은 필요 시에만 운영
- SETUP.md
로컬 개발 환경 및 Terraform 실행 방법 정리
/infra start # Sandbox 인프라 시작
/infra stop # Sandbox 인프라 종료
/infra status # 상태 확인
- Sandbox 환경은 비용 절감을 위해 필요한 시간에만 운영
- Discord Bot은 Sandbox 환경 전용
sandbox브랜치를 기준으로 PR 생성 시 자동 실행- 변경 사항을 실제 리소스 생성 없이 검증
- Plan 결과는 PR 코멘트로 확인 가능
- GitHub Actions
workflow_dispatch로 수동 실행 - GitHub Environment를 통한 승인 후 적용 가능
- Sandbox / Production 각각 독립 실행
sandbox브랜치 기준으로 작업 브랜치 생성- Terraform 코드 변경
sandbox브랜치로 PR 생성- GitHub Actions에서 Terraform Plan 자동 실행
- Plan 결과 확인
- PR 머지
- 필요 시 GitHub Actions에서 Terraform Apply 수동 실행
Sandbox에서는
null_resource등을 활용해
실제 AWS 리소스 생성 없이 apply 테스트를 수행할 수 있습니다.
Terraform 실행을 위해 AWS Profile 기반 인증을 사용합니다.
- Windows
C:\Users\<사용자명>\.aws\credentials - macOS
/Users/<사용자명>/.aws/credentials
[sandbox]
aws_access_key_id = <ACCESS_KEY>
aws_secret_access_key = <SECRET_KEY>
[prod]
aws_access_key_id = <ACCESS_KEY>
aws_secret_access_key = <SECRET_KEY>
환경 변경 시마다 terraform init을 다시 실행해야 합니다.
# Sandbox
terraform init \
-var-file="sandbox.tfvars" \
-backend-config="backend-sandbox.hcl" \
-reconfigure
# Production
terraform init \
-var-file="prod.tfvars" \
-backend-config="backend-prod.hcl" \
-reconfigure# Sandbox
terraform plan -var-file="sandbox.tfvars"
# Production
terraform plan -var-file="prod.tfvars"# Sandbox
terraform apply -var-file="sandbox.tfvars"
# Production
terraform apply -var-file="prod.tfvars"terraform fmt --recursive