This repo contains code for a multi-tier application.
The application overview is as follows
web <=> api <=> db
The folders web
and api
respectively describe how to install and run each app.
- Terraform:
Suggested course: https://www.linkedin.com/learning/learning-terraform-2 - Ansible:
Suggested course: https://www.linkedin.com/learning/ansible-essential-training-14199798 - Docker:
Suggested course: https://www.linkedin.com/learning/learning-docker-2018 - Kubernetes:
Suggested course: https://www.linkedin.com/learning/learning-kubernetes
Create the scripts (Terraform and Ansible) to deploy the multi-tier application with source code hosted here on 2 machines and a managed DB instance.
- The web and api tiers should be deployed on 2 different virtual machines. The 2 VMs should be provisioned using Terraform.
- A managed postgres DB to use in the application on AWS RDS for example should be provisioned using Terraform.
- On each machine, using Ansible:
- Setup docker and docker-compose and set them to auto start as OS services.
- Clone this repo and start the tier, either web or api.
- The solution scripts should allow to be easily added to a repo and trigger the deployment pipline on any commit, using Jenkins or AWS code build or the like.
Create the scripts (Terraform and Kubernets) to deploy the multi-tier application with source code hosted here as a fully containerized service on a Kubernetes cluster.
- The web and api tiers must have multiple container instances.
- The API needs one database (PostgreSQL) and this service needs be in a container.
- The solution should support docker image versioning
- The solution should write all application logs to a remote Rsyslog service
- The solution must handle instance and container failures
- The result of running the scripts should be two publicly available tiers: web and api
- The script should be able to run against any AWS infrastructure and be able to launch the same tiers with minimal custom configuration or install steps.