Deploys modular, production-ready AWS infrastructure using Terraform and HCP Terraform, applying Infrastructure as Code best practices for scalability and version-controlled workflows.
This project uses Infrastructure as Code (IaC) to deploy and manage AWS infrastructure for a web application with Terraform modules. It organizes networking, compute, and database resources into reusable configurations, with state managed through HCP Terraform. This setup enables a VCS-driven workflow, where updates to configuration files trigger infrastructure changes automatically.
// images
Terraform configuration in HCP Terraform applies reusable modules that provision an AWS VPC with networking and EC2 compute resources.
Challenges
Designing AWS infrastructure with clear separation between networking, compute, and database layers.
Keeping the database isolated from public internet access while allowing the web tier to connect securely.
Managing infrastructure changes safely through a VCS-driven Terraform workflow.
Approach
Built reusable Terraform modules for VPC/subnets/security groups, EC2 compute, and RDS database resources.
Used HCP Terraform for remote state management and automated runs triggered by GitHub changes.
Provisioned EC2 instances with user data and cloud-init to install nginx, MariaDB tooling, and serve a basic web app.
Outcomes
Created a modular AWS IaC setup that can be reused and adjusted across environments.
Improved security by placing RDS in private subnets and limiting MySQL access to the web server security group.
Gained hands-on experience with Terraform modules, HCP Terraform workflows, AWS networking, and EC2 bootstrapping.