Build a Cloud setup for use

Job ID: 30923720

Budget: ₹600 – ₹1,500 INR

Need to plan & bootstrap infrastructure on AWS along with basic CI/CD for a client. The client wants to have a Dockerized Node js app (monolith) running securely. The client expects to have a manageable, easy to configure and secure design for his infrastructure & CI/CD.

After initial discussions, the following deliverables have been identified for the POC:

A VPC setup on AWS which includes public & private subnets (multi-AZ). Public subnets should be used for only exposing required services. This VPC should be managed via Terraform.
Following instances will be needed:
Jenkins - For CI purpose.
App - For running the containerized version of the app.
Bastion - In a public subnet for accessing private instances.
ALB for accessing App and Jenkins.
A Jenkins pipeline to build nodejs app image & deploy it on the app instance.

To ensure reproducible and manageable work, the following things are to be considered in the POC:

Use Terraform with a proper structure of codebase and state management for infrastructure provisioning.
Use Ansible for configuration management, for instance, installing ‘Docker’ on the hosts.
Use Jenkins to build the CICD pipeline for the deployment of node applications.
Use Github as a codebase repository and ECR for docker image repository.
A step by step documentation of the steps needed to run the POC along with explanations wherever required.

General Guidelines:

To easily identify resources in AWS (& billing), choose a 3 digit lucky number (or call it project code) and use it as part of the name of AWS resources.
Make sure the codebase(s) are readable and structured in some logical way.
Do not spend a lot of time on 1 particular subtask. If you are stuck on any subtask for long (say 2 days), attempt it manually and move to the next subtask.
For all manually performed tasks, ensure that you take relevant snapshots as they will be used later in the submission.
Make sure to destroy resources whenever not in use for long. eg. NAT-GW, ALB, EC2 will incur a cost.
Consider destroying the resources using terraform and create them again when resuming work. Destroy resources created outside of Terraform as well.(Share code/steps seperately to me)

Could supply you below:

Refer official docs for most cases and ensure the correct version of the tool is being used.
Could give you a set of reference resources are added in the reference segment to help you with the various tasks and sub-tasks.