Project 2 – Infrastructure Provisioning Automation

Architecture diagram
In this project, students will work in a team to deploy AWS infrastructure using infrastructure provisioning automation tools. The infrastructures that are deployed can be used to host typical multi-tiered web apps and microservices.
Requirements
Deploy and configure web app infrastructure with Terraform and/or Ansible
Use Terraform and/or Ansible to set up a multi-tiered application infrastructure architecture. You can leverage both Terraform and Ansible to automate the infrastructure provisioning and configuration or you can use just one tool of choice. For example you can use cloud init scripts within Terraform, or you can combine Terraform and Ansible roles to set up the infrastructure and configuration.
- AWS VPC network.
- Create an AWS VPC.
- Create an internet gateway and associate it to the VPC.
- Create one private subnet and one public subnet in the VPC.
- Create a public route table routing 0.0.0.0/0 to the internet gateway.
- Associate the public subnet to the public route table.
- Create security groups for the subnets.
- Private subnet security group allows all incoming traffic from the public subnet security group.
- Public subnet security group allows incoming traffic on port 80 and 443 from 0.0.0.0/0 (public internet).
- Database server.
- Create and launch an EC2 instance – e.g. Ubuntu 22.04 – into the private subnet created earlier.
- Download and install a database server in the EC2 instance – e.g. MySQL, PostgreSQL or MongoDB.
- Start and enable the database server service and ensure the database ports – e.g. 3306, 5432, etc. – are open and able to receive connections.
- API server.
- Create and launch an EC2 instance – e.g. Ubuntu 22.04 – into the public subnet created earlier.
- Download and install packages for an API server.
- For example for a Python FastAPI API server:
- Python 3.10.
- fastapi python library.
- For MEAN stack NodeJS Express API server:
- Node 18
- Express library
- For example for a Python FastAPI API server:
- Bonus – you can add the following components to your infrastructure but it is not mandatory.
- Autoscaling group.
- Application load balancer.
Documentation
- The code is stored in a public GitHub repo.
- Create a README.md in your GitHub repo.
- In the README.md
- URL to public GitHub repo
- Architectural diagrams depicting the AWS cloud infrastructure setup and any other pertinent visualizations.
- Include instructions on:
- How users can leverage the Terraform and or Ansible scripts to provision and configure the infrastructure in your project.
- How users can shut down and clean up the infrastructure launched from your project.
Submission Instructions
- In the README.md of your GitHub repo include the names of members in your group.
- Download a Zip file of your completed GitHub repo.
- Click onÂ
Hand In tab in the learning portal project page. - Click onÂ
Upload Assignment and upload the zip file.
