https://github.com/imsalmanmalik/terraform-aws-codepipeline-codedeploy-docker-metabase-project
The project includes setting up a VPC with private subnets, EC2 instances, RDS, and S3, along with Docker containers for application deployment. It also features a CI/CD pipeline with AWS CodeDeploy and CodePipeline. Live data visualisation using Metabase BI tool.
https://github.com/imsalmanmalik/terraform-aws-codepipeline-codedeploy-docker-metabase-project
aws bash-scripting business-intelligence codedeploy codepipeline containerization docker docker-compose ecr-registry infrastructure-as-code metabase multitier-architecture php rds-database security terraform visualisation vpc-network
Last synced: 3 months ago
JSON representation
The project includes setting up a VPC with private subnets, EC2 instances, RDS, and S3, along with Docker containers for application deployment. It also features a CI/CD pipeline with AWS CodeDeploy and CodePipeline. Live data visualisation using Metabase BI tool.
- Host: GitHub
- URL: https://github.com/imsalmanmalik/terraform-aws-codepipeline-codedeploy-docker-metabase-project
- Owner: imsalmanmalik
- Created: 2024-06-09T20:13:39.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2024-06-09T21:16:00.000Z (12 months ago)
- Last Synced: 2025-01-05T06:28:39.663Z (5 months ago)
- Topics: aws, bash-scripting, business-intelligence, codedeploy, codepipeline, containerization, docker, docker-compose, ecr-registry, infrastructure-as-code, metabase, multitier-architecture, php, rds-database, security, terraform, visualisation, vpc-network
- Language: SCSS
- Homepage:
- Size: 1.77 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# End-to-End AWS Infrastructure Deployment: Terraform, Docker, CI/CD, and Live Data Visualization with Metabase
This repository showcases a complete deployment of a PHP application on AWS using Terraform, Docker, AWS CodeDeploy and CodePipeline.
## Table of Contents
- [Project Overview](#project-overview)
- [Getting Started](#getting-started)
- [Infrastructure Setup](#infrastructure-setup)
- [CI/CD Pipeline](#ci-cd-pipeline)
- [Domain and SSL Configuration](#domain-and-ssl-configuration)
- [Monitoring](#monitoring)## Project Overview
This project demonstrates the following key aspects:
- **Infrastructure as Code (IaC):** Automated deployment of AWS resources including VPC with private subnets using Terraform.
- **AWS Services:** Deployment of EC2 instances, RDS, S3, and more.
- **Application Setup:** Nginx and PHP applications deployed using Docker containers.
- **CI/CD Pipeline:** Continuous Integration and Continuous Deployment using AWS CodeDeploy.
- **Security:** SSL certificates configuration via Cloudflare.
- **Live Visualization:** Metabase BI tool for monitoring the RDS MySQL database.
- **Access Management:** Secure access to private resources using a jump server.## Getting Started
To get a local copy up and running, follow these steps.
### Prerequisites
- AWS Account
- Terraform
- Docker
- AWS CLI
- Cloudflare Account### Installation
1) Configure AWS CLI:
```bash
aws configure
```## Infrastructure Setup
1) Apply Terraform Configuration:
```bash
terraform init
``````bash
terraform plan
terraform apply
```2) Access Jump Server:
```bash
ssh -i your-key.pem ec2-user@jump-server-ip
```3) Access Backend Server via Jump Server:
```bash
ssh -i your-key.pem ec2-user@private-vm-ip
```## CI/CD Pipeline
1) Setup Docker and Docker-Compose:
* Ensure Docker and Docker-Compose are installed on the deployment servers.
2) Configure CodeDeploy:
* Use the provided appspec.yml and buildspec.yml files to setup CodeDeploy.
3) Deploy Applications:
* Deploy Nginx and PHP applications using Docker containers.
## Domain and SSL Configuration
1) Domain Setup:
* Configure your domain with Cloudflare.
2) SSL Certificates:
* Add a CNAME record in Cloudflare to get free SSL certificates for your domain.
## Monitoring
1) Setup Metabase:
* Deploy Metabase using Docker.* Configure Metabase to monitor the RDS MySQL database.