Skip to content
All projects
Infrastructure as Code

Terraform AWS Infrastructure

Deploys modular, production-ready AWS infrastructure using Terraform and HCP Terraform, applying Infrastructure as Code best practices for scalability and version-controlled workflows.

Role
Personal project
Timeline
2024
Terraform + HCP
IaC

// architecture

Context

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.

// stack

  • Terraform
  • HCP Terraform
  • AWS
  • VPC
  • EC2
  • HCL
  • Cloud-Init