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
β Build reusable Terraform modules
β Implement secure IAM structure
β Design scalable VPC architecture
β Deploy EC2 instances using variables
β Maintain separate Dev & Prod environments
- Terraform acts as the orchestrator
- AWS is the cloud provider
- Modules ensure reusability & scalability
- Separate environments ensure isolation
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| Tool | Purpose |
|---|---|
| Terraform | Infrastructure as Code |
| AWS | Cloud Provider |
| Git | Version Control |
| GitHub | Code Hosting |
- Creates IAM Users
- Manages Groups
- Attaches Policies
- Generates Login Profiles
- Creates VPC
- Public & Private Subnets
- Internet Gateway
- Multi-AZ support
- Launches EC2 instance
- Configurable AMI
- Instance Type selection
- Subnet-based deployment
| Environment | Purpose |
|---|---|
| π§ͺ Development | Testing & experimentation |
| π Production | Live deployment |
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
terraform initterraform validateterraform plan -var="aws_region=us-east-1" -var="aws_access_key=YOUR_ACCESS_KEY" -var="aws_secret_key=YOUR_SECRET_KEY"terraform apply -var="aws_region=us-east-1" -var="aws_access_key=YOUR_ACCESS_KEY" -var="aws_secret_key=YOUR_SECRET_KEY"terraform destroy -var="aws_region=us-east-1" -var="aws_access_key=YOUR_ACCESS_KEY" -var="aws_secret_key=YOUR_SECRET_KEY"β IAM User Credentials
1.IAM USER NAME
2.IAM PASSWORD
3.IAM CONSOLE LINK
β VPC ID
β Subnet Count
β EC2 Instance ID
β AWS Region
β Modular Design
β Reusable Code
β Environment Separation
β Secure IAM Policies
β Clean Git Structure
- Terraform modular architecture
- AWS infrastructure provisioning
- Dev vs Prod environment management
- Git-based workflow
Chaitanya Bhosale
π GitHub: https://github.com/Chaitanya5068
π LinkedIn: https://www.linkedin.com/in/chaitanya-bhosale
If you found this project useful, consider giving it a β on GitHub!
This project is created for educational purposes and demonstrates real-world Terraform practices.