Infrastructure as Code (IaC) repository for the Podcast Converter application using Terraform.
podcast-converter-infra/
├── .github/
│ └── workflows/
│ └── terraform.yml # Infrastructure CI/CD
├── terraform/
│ ├── environments/ # Environment-specific configs
│ │ ├── dev/
│ │ ├── staging/
│ │ └── prod/
│ ├── modules/ # Reusable modules
│ │ └── podcast-converter/
│ ├── provider.tf
│ ├── variables.tf
│ ├── vpc.tf
│ ├── eks.tf
│ ├── s3.tf
│ ├── iam.tf
│ ├── monitoring.tf
│ └── outputs.tf
└── versions.tf
- Terraform >= 1.0.0
- AWS CLI configured
- GitHub Actions secrets configured
- AWS account with required permissions
- Clone the repository:
git clone https://github.com/ceteongvanness/podcast-converter-infra.git
cd podcast-converter-infra- Initialize Terraform:
cd terraform/environments/dev # or staging/prod
terraform init- Deploy infrastructure:
terraform plan -var-file="variables.tfvars"
terraform apply -var-file="variables.tfvars"- Small-scale infrastructure
- Single availability zone
- Cost-optimized resources
- Minimal redundancy
- Medium-scale infrastructure
- Two availability zones
- Monitoring enabled
- Test environment for production
- Full-scale infrastructure
- Three availability zones
- High availability
- Full monitoring and alerting
- Automated backups
- VPC with public/private subnets
- EKS cluster
- Managed node groups
- S3 buckets
- IAM roles and policies
- Monitoring stack (Prometheus/Grafana)
The terraform.yml workflow:
- Runs on infrastructure changes
- Validates Terraform configurations
- Plans changes on pull requests
- Applies changes when merged to main
- Encrypted storage
- Private subnets for EKS
- IAM roles with least privilege
- Security group restrictions
- Regular security audits
- EKS cluster metrics
- Node monitoring
- Application metrics
- Cost monitoring
- Alert management
- Regular state backups
- Multi-AZ deployment
- Automated snapshots
- Recovery procedures
- Fork the repository
- Create feature branch
- Make changes
- Test in dev environment
- Submit pull request
- Main branch protected
- Required reviews
- Required status checks
- No direct commits to main
- Resource tagging
- Cost allocation
- Automated reporting
- Environment-specific optimizations
For issues:
- Check existing issues
- Provide clear description
- Include logs/errors
- Tag appropriately
This project is licensed under the MIT License - see the LICENSE file for details.