Skip to content

Chaitanya5068/terraform-infra

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

5 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸš€ Terraform AWS Modular Infrastructure


🌟 Project Overview

This project demonstrates a production-ready Infrastructure as Code (IaC) setup using Terraform on AWS. It uses a modular architecture to provision and manage:

  • πŸ‘€ IAM (Users, Groups, Policies)
  • 🌐 VPC (Networking, Subnets, Gateway)
  • πŸ’» EC2 (Compute Instances)

With fully separated:

  • πŸ§ͺ Development Environment
  • πŸš€ Production Environment

🎯 Objective

βœ” Build reusable Terraform modules

βœ” Implement secure IAM structure

βœ” Design scalable VPC architecture

βœ” Deploy EC2 instances using variables

βœ” Maintain separate Dev & Prod environments


πŸ—οΈ Architecture

image

πŸ” Architecture Highlights

  • Terraform acts as the orchestrator
  • AWS is the cloud provider
  • Modules ensure reusability & scalability
  • Separate environments ensure isolation

πŸ“ Project Structure

terraform-infra/
β”‚
β”œβ”€β”€ modules/                         # Reusable Terraform modules
β”‚   β”‚
β”‚   β”œβ”€β”€ iam/                         # IAM Module (users, groups, policies)
β”‚   β”‚   β”œβ”€β”€ main.tf                  # Creates IAM users, group, attachments
β”‚   β”‚   β”œβ”€β”€ variables.tf             # Inputs: user_names, group_name, policies
β”‚   β”‚   └── outputs.tf               # Outputs: user info, credentials
β”‚   β”‚
β”‚   β”œβ”€β”€ vpc/                         # VPC Module (network infrastructure)
β”‚   β”‚   β”œβ”€β”€ main.tf                  # Uses Terraform AWS VPC module
β”‚   β”‚   β”œβ”€β”€ variables.tf             # Inputs: CIDR, subnets, AZs
β”‚   β”‚   └── outputs.tf               # Outputs: vpc_id, subnet details
β”‚   β”‚
β”‚   └── ec2/                         # EC2 Module (compute resources)
β”‚       β”œβ”€β”€ main.tf                  # Launch EC2 instance
β”‚       β”œβ”€β”€ variables.tf             # Inputs: AMI, instance type, subnet
β”‚       └── outputs.tf               # Outputs: instance_id
β”‚
β”œβ”€β”€ development/                     # Development Environment
β”‚   β”œβ”€β”€ main.tf                      # Calls IAM, VPC, EC2 modules
β”‚   β”œβ”€β”€ variables.tf                 # Dev-specific configurations
β”‚   └── outputs.tf                   # Final outputs (dev)
β”‚
β”œβ”€β”€ production/                      # Production Environment
β”‚   β”œβ”€β”€ main.tf                      # Calls IAM, VPC, EC2 modules
β”‚   β”œβ”€β”€ variables.tf                 # Prod-specific configurations
β”‚   └── outputs.tf                   # Final outputs (prod)
β”‚
β”œβ”€β”€ README.md                        # Project documentation
└── LICENSE                          # License file

βš™οΈ Tech Stack

Tool Purpose
Terraform Infrastructure as Code
AWS Cloud Provider
Git Version Control
GitHub Code Hosting

πŸ“¦ Modules Breakdown

πŸ‘€ IAM Module

  • Creates IAM Users
  • Manages Groups
  • Attaches Policies
  • Generates Login Profiles

🌐 VPC Module

  • Creates VPC
  • Public & Private Subnets
  • Internet Gateway
  • Multi-AZ support

πŸ’» EC2 Module

  • Launches EC2 instance
  • Configurable AMI
  • Instance Type selection
  • Subnet-based deployment

🌍 Environments

Environment Purpose
πŸ§ͺ Development Testing & experimentation
πŸš€ Production Live deployment

πŸ”„ Workflow

Start
  β”‚
  β–Ό
Write Terraform Code (Modules + Environments)
  β”‚
  β–Ό
Initialize Terraform (terraform init)
  β”‚
  β–Ό
Validate Configuration (terraform validate)
  β”‚
  β–Ό
Generate Execution Plan (terraform plan)
  β”‚
  β–Ό
Apply Infrastructure (terraform apply)
  β”‚
  β–Ό
Resources Created in AWS
  β”‚
  β–Ό
Verify Resources (IAM, VPC, EC2)
  β”‚
  β–Ό
Destroy Infrastructure (terraform destroy)
  β”‚
  β–Ό
 End

πŸš€ Getting Started

πŸ”Ή Initialize

terraform init

πŸ”Ή Validate

terraform validate

πŸ”Ή Plan

terraform plan -var="aws_region=us-east-1" -var="aws_access_key=YOUR_ACCESS_KEY" -var="aws_secret_key=YOUR_SECRET_KEY"

πŸ”Ή Apply

terraform apply -var="aws_region=us-east-1" -var="aws_access_key=YOUR_ACCESS_KEY" -var="aws_secret_key=YOUR_SECRET_KEY"

πŸ”Ή Destroy

terraform destroy -var="aws_region=us-east-1" -var="aws_access_key=YOUR_ACCESS_KEY" -var="aws_secret_key=YOUR_SECRET_KEY"

πŸ“Š Outputs

βœ” IAM User Credentials

1.IAM USER NAME

2.IAM PASSWORD

3.IAM CONSOLE LINK

βœ” VPC ID

βœ” Subnet Count

βœ” EC2 Instance ID

βœ” AWS Region


πŸ” Best Practices Followed

βœ… Modular Design

βœ… Reusable Code

βœ… Environment Separation

βœ… Secure IAM Policies

βœ… Clean Git Structure


🧠 Key Learnings

  • Terraform modular architecture
  • AWS infrastructure provisioning
  • Dev vs Prod environment management
  • Git-based workflow

πŸ‘¨β€πŸ’» Author

Chaitanya Bhosale

πŸ”— GitHub: https://github.com/Chaitanya5068

πŸ”— LinkedIn: https://www.linkedin.com/in/chaitanya-bhosale


⭐ Support

If you found this project useful, consider giving it a ⭐ on GitHub!


πŸ“Œ Note

This project is created for educational purposes and demonstrates real-world Terraform practices.

About

Production-ready Terraform AWS infrastructure using modular architecture (IAM, VPC, EC2) with separate Dev & Prod environments for scalable and secure deployments.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages