terraform-on-aws-ec2 is a numbered course companion, not a module library
Terraform On AWS for EC2, VPC, ASG, ALB, CLB, NLB, CloudWatch, SNS, S3, CodePipeline, ACM, Route53
At a glance
- What is it?
- The stacksimplify/terraform-on-aws-ec2 repository holds one folder per lesson of a paid Terraform on AWS course, walking from VPC and EC2 to load balancers, autoscaling, remote state and CodePipeline, and it is meant to be forked and run against a real AWS account.
- Who is it for?
- terraform-on-aws-ec2 suits a learner who wants to follow a fixed, ordered path through Terraform on AWS with a worked example in every folder, and it suits an instructor who wants a set of ready demonstrations. It is the wrong tool for a team looking for production-ready Terraform modules, because these are teaching configurations for a course, and it is the wrong tool for a shared account, since the demos create real VPCs, load balancers and databases and bill for them.
- Can I use it commercially?
- Not without permission. GitHub finds no licence file in the repository, and without a licence all rights are reserved by default: you may read the code but not reuse it. Check the README, or ask the authors, before using it.
- Is it still maintained?
- Yes. The repository last received commits 3 days ago.
- What is it written in?
- Mainly HCL, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 22, 2026, and from our analysis. They are not legal advice.
Editorial analysis
The repository is a companion to a paid course
The README is the course page, and the repository is what you download to follow along. The title is Terraform on AWS with SRE and IaC DevOps, Real-World 20 Demos, and the course is sold on stacksimplify.com with a link to the course image and the enrolment page. The instructor profile section names Kalyan Reddy Daida, and the README closes with links to the author's other courses on AWS EKS, Azure Kubernetes Service and the HashiCorp Terraform Associate certification track.
That context changes how to read the repository. The top level of the tree is not a set of modules you would reference from your own code, it is a course curriculum as directories, one per lesson, numbered in the order the lessons run. The repository description lists the AWS surface the course covers, Terraform On AWS for EC2, VPC, ASG, ALB, CLB, NLB, CloudWatch, SNS, S3, CodePipeline, ACM and Route53, and the topics list is full of terraform-modules and terraform-configurations tags, which is what you would expect from a repository of example configurations.
The course positions itself for people who are starting out. The README says you do not need to have any basic knowledge of Terraform, that the course gets started from very very basics and goes to very advanced levels, and that the target students are infrastructure architects, sysadmins or developers planning to master Terraform, plus anyone who wants to learn Terraform from a real-world perspective.
There is one instruction that is easy to miss and important in practice. Under the heading for GitHub repositories used for this course, the README asks you to go to these repositories and fork these repositories and make use of them during the course. The main example repository is the HashiCorp Certified Terraform Associate one, and forking rather than cloning is the intended workflow.
One directory per lesson, numbered in teaching order
The directory listing is the course outline in its most concrete form, and the numbering tells you both the sequence and the age of each example.
The first five directories cover the language itself: 01-Infrastructure-as-Code-IaC-Basics, 02-Terraform-Basics, 03-Terraform-Settings-Providers-Resources, 04-Terraform-Variables-and-Datasources, and 05-Terraform-Loops-MetaArguments-SplatOperator. From there the modules move to AWS in dependency order, which is the useful part: 06-AWS-VPC, 07-AWS-EC2Instance-and-SecurityGroups, 08-AWS-ELB-Classic-LoadBalancer, 09-AWS-ALB-Application-LoadBalancer-Basic, then three ALB routing modules, 10-ALB-Path-Based-Routing, 11-ALB-Host-Header-Based-Routing and 12-ALB-HTTPHeader-QueryString-Redirects, followed by 13-DNS-to-DB.
Autoscaling comes next, and here the naming changes. The directory is 14-DEPRECATED-Autoscaling-with-Launch-Configuration, and the module list in the README pairs module 14 with AWS Autoscaling with Launch Configuration and module 15 with AWS Autoscaling with Launch Templates, the latter stored as 15-Autoscaling-with-Launch-Templates. A directory whose name starts with DEPRECATED is a deliberate signal from the author about which of the two autoscaling approaches the course still recommends.
The tail of the tree is where the configuration practice gets more advanced: 16-AWS-NLB-Network-Load-Balancer, 17-AWS-CloudWatch, 18-Develop-Terraform-Modules-Locally, 19-Develop-Terraform-Module-from-scratch, 20-Remote-State-Storage-with-AWS-S3-and-DynamoDB, 21-terraform-remote-state-datasource, and 22-IaC-DevOps-using-AWS-CodePipeline.
Each directory is a self-contained configuration, which is what makes the repository usable as a reference as well as a course. If you want to see how a three-tier VPC is wired, directory 06 is the answer, and you can read it without working through anything before it.
The AWS services covered, and what the course claims you will build
The README lists the AWS services covered separately from the course modules, and the list is broader than the module list, which is a useful signal about what is demonstrated versus what is mentioned.
The services list includes AWS VPC, VPC NAT Gateways for outbound communication, VPC public and private subnets, EC2 instances, security groups, the classic load balancer, ALB basics, ALB context-path, host-header and custom-HTTP-header based routing, ALB query string based redirects, autoscaling with launch configurations and with launch templates, the network load balancer, CloudWatch alarms, Certificate Manager, Route53, CodeBuild, CodePipeline, RDS database, Elastic IP and SNS.
Against that, the course module list is numbered and includes the same load balancer and routing content, the autoscaling pair, CloudWatch alarms for ALB, ASG and CIS, and ends with the IaC DevOps use case using AWS CodePipeline for your Terraform configurations.
The learning outcomes are stated as concrete build targets rather than as topics. You will build AWS VPC 3-Tier Architecture using Terraform, build various load balancers CLB, ALB and NLB, build DNS to DB architecture on AWS, build autoscaling with launch configuration and with launch templates, build AWS CloudWatch alarms, and implement the IaC DevOps use case with AWS CodePipeline for your Terraform configurations. You will also learn in detail about Terraform state, local and remote backends, and implement all Terraform provisioners and Terraform modules of both types, public and local.
One inconsistency is worth noting. The title says Real-World 20 Demos, the module list runs to 22, and the outcomes list says you will master Terraform with 22 demo's. The numbering of the directories matches the 22 count, so the 20 in the title is a leftover rather than a statement about the contents.
The Terraform concepts list reads like a manual index
The third list in the README, the Terraform concepts covered, is the most technical part of the document and the most useful if you are trying to work out what a folder contains before opening it.
It starts with the mechanics: Terraform install, command basics with init, validate, plan and apply, language syntax of blocks and arguments, the settings block, the provider block, the resources block, and the resource meta-arguments depends_on, count and for_each.
Then the input story, which is unusually thorough for a course outline. Input variables basics, assigning when prompted, overriding a default with a cli var, assigning with terraform.tfvars, assigning with the tfvars var-file argument, and assigning with auto tfvars. It then covers lists, maps and sensitive input variables, so the variables topic runs for several lessons on its own.
After that come the language features: the file function, output values, local values, datasources, backends for remote state storage, the file provisioner, the local-exec provisioner, the remote-exec provisioner and the null resource. Modules are covered both ways, modules from the public registry and building a local module, followed by module upgrades.
The loop and function coverage is split into separate entries rather than one, with for loop with lists, for loop with maps, for loops with advanced maps, then the legacy splat operator and the latest splat operator as two distinct items, and functions toset, tomap and keys. The list ends with the random resource and Terraform import.
Reading that list tells you what the configuration files actually exercise. The presence of both splat operator versions and of Terraform import as a separate entry says the author is deliberately covering syntax that changed between Terraform versions, which is exactly the kind of thing that bites a team copying an old configuration.
A December 2023 refresh, and the old tree kept alongside
Three directory names at the top level record how the repository has been maintained, and they are unusual enough to be worth reading before you use anything here.
There is V1-UPDATES-DEC2023, and there is BACKUP-BEFORE-DEC2023-UPDATES. The pattern is clear: at some point in December 2023 the configurations were updated, and rather than overwriting the earlier versions in place, the author kept them. The current directories hold the updated configurations and the backup tree preserves what they looked like before.
Why that matters is that a Terraform configuration is not just text. It encodes a provider version, a set of resource arguments and often an assumed data model of the cloud provider's API. A configuration written against an older provider can still apply, sometimes, and produce resources with settings you did not intend, and the diff between the old and new trees is a readable record of what the author considered necessary to change.
There is also git-deploy.sh at the root, alongside a presentation/ directory. A shell script at the root of a course repository is worth a look before running: in a configuration repository, a script that automates deployment is the kind of file that needs reading rather than executing, since it is the one place where a mistake reaches an AWS account.
On the state of the project, the repository is not archived and the last push was on 2026-10-20, so it is being kept current. There are no GitHub releases, so there is no tag to pin, and the version history lives in the directory names and in the commit log rather than in a release page. The licence field is marked as unknown, and the README carries no licence section, so the terms are not stated anywhere in the documentation you can read here.
Editorial conclusion
terraform-on-aws-ec2 suits a learner who wants to follow a fixed, ordered path through Terraform on AWS with a worked example in every folder, and it suits an instructor who wants a set of ready demonstrations. It is the wrong tool for a team looking for production-ready Terraform modules, because these are teaching configurations for a course, and it is the wrong tool for a shared account, since the demos create real VPCs, load balancers and databases and bill for them. Before running anything, read the README's prerequisites, which require an AWS Cloud account and hands-on activity, check the LICENSE situation yourself because the repository licence field is marked as unknown, and read the December 2023 update notes before copying a configuration that predates them.
Frequently asked questions
What is the terraform-on-aws-ec2 repository used for?
It is the companion repository for a paid Terraform on AWS course, with one numbered directory per lesson covering VPC, EC2, load balancers, autoscaling, CloudWatch, remote state and CodePipeline. The README asks students to fork the repositories and work through the examples against a real AWS account.
Do I need an AWS account to follow the terraform-on-aws-ec2 examples?
Yes. The README lists as a course requirement that you must have an AWS Cloud account to follow along with the hands-on activities, and the configurations create real resources such as VPCs, load balancers and databases.
Which module shows how to build a three tier VPC with Terraform?
Directory 06-AWS-VPC covers the AWS VPC 3-Tier Architecture, and 07-AWS-EC2Instance-and-SecurityGroups covers the compute and security groups inside it. The course outcomes list also names a VPC 3-Tier Architecture build as something students construct.
What is the difference between the two autoscaling modules?
Module 14 covers autoscaling with launch configurations and its directory is named 14-DEPRECATED-Autoscaling-with-Launch-Configuration, while module 15 covers autoscaling with launch templates in 15-Autoscaling-with-Launch-Templates. The deprecated marking tells you which of the two the author still recommends.
What are the V1-UPDATES-DEC2023 and BACKUP-BEFORE-DEC2023-UPDATES directories?
They record a refresh of the configurations in December 2023. The current numbered directories hold the updated files, and the backup directory preserves the earlier versions, so the difference between the two trees shows what the author considered necessary to change.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/stacksimplify-terraform-on-aws-ec2)Was this useful?