Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
65 commits
Select commit Hold shift + click to select a range
07d381f
Update README.md
Jothamcloud Nov 18, 2024
9d1c64f
Update README.md
Jothamcloud Nov 18, 2024
2d1d693
Update README.md
Jothamcloud Nov 19, 2024
d844962
Update README.md
Jothamcloud Nov 19, 2024
83f1884
Added Necessary Files
OtowoSamuel Nov 29, 2024
b5236a2
Deleted a file]
OtowoSamuel Nov 29, 2024
b9f4295
Updated monitoring
OtowoSamuel Nov 29, 2024
01e3595
Update
Nov 29, 2024
729d46b
Update
Nov 29, 2024
695af2d
Update docker compose
Nov 30, 2024
79b92bb
Update
Nov 30, 2024
ef183a9
Updated
Dec 2, 2024
3f88219
Update
Dec 3, 2024
1ff846b
Update
Dec 5, 2024
42309e8
Challenge 2
OtowoSamuel Dec 6, 2024
7ccd77c
Track large files with Git LFS
OtowoSamuel Dec 6, 2024
15791c7
Update
OtowoSamuel Dec 6, 2024
1451a60
Update
OtowoSamuel Dec 6, 2024
2c6548f
Update
OtowoSamuel Dec 7, 2024
d1d472e
Update
OtowoSamuel Dec 7, 2024
a4d5c15
2 and 3
OtowoSamuel Jan 7, 2025
39cbc8f
Beginning of cv-challenge03
OtowoSamuel Jan 8, 2025
eced724
Updated Workflow and added .gitignore
OtowoSamuel Jan 10, 2025
a8dfe84
Updated Workflow
OtowoSamuel Jan 10, 2025
9c63f94
Test workflow trigger
OtowoSamuel Jan 10, 2025
fc8f877
Test workflow trigger
OtowoSamuel Jan 10, 2025
e756ef6
Test workflow trigger
OtowoSamuel Jan 10, 2025
792f9ca
Test workflow trigger
OtowoSamuel Jan 10, 2025
31e7e73
Merge branch 'The-DevOps-Dojo:main' into main
OtowoSamuel Jan 10, 2025
7d89b80
Updated some files
OtowoSamuel Jan 10, 2025
eab3a83
Test workflow trigger
OtowoSamuel Jan 10, 2025
2220f1e
Test workflow trigger
OtowoSamuel Jan 10, 2025
5efb6e2
Test workflow trigger
OtowoSamuel Jan 10, 2025
f8a6439
Merge pull request #1 from OtowoSamuel/infra_features
OtowoSamuel Jan 10, 2025
12d7def
Updated some files
OtowoSamuel Jan 10, 2025
bbd45ce
Updated some files
OtowoSamuel Jan 10, 2025
eea7401
Updated Plan
OtowoSamuel Jan 10, 2025
db9209a
Updated Plan
OtowoSamuel Jan 10, 2025
9378c50
Updated Plan
OtowoSamuel Jan 10, 2025
b5f282c
Merge pull request #5 from OtowoSamuel/infra_features
OtowoSamuel Jan 10, 2025
3b31df0
Updated Apply
OtowoSamuel Jan 11, 2025
dd3c292
Updated Apply
OtowoSamuel Jan 11, 2025
466ffb6
Updated Apply
OtowoSamuel Jan 11, 2025
4f70aa2
Updated Apply
OtowoSamuel Jan 11, 2025
f1cab0f
Updated Apply
OtowoSamuel Jan 11, 2025
e48458b
Updated Apply
OtowoSamuel Jan 11, 2025
9ca1f83
Updated Apply
OtowoSamuel Jan 11, 2025
bde58bc
Updated Apply
OtowoSamuel Jan 11, 2025
acc5d5c
Updated Apply
OtowoSamuel Jan 11, 2025
196bcc6
Updated Some Files
OtowoSamuel Jan 11, 2025
768179f
Updated Some Files
OtowoSamuel Jan 11, 2025
8309d91
Updated Some Files
OtowoSamuel Jan 11, 2025
bbe92e9
Updated Some Files
OtowoSamuel Jan 11, 2025
671fa88
Updated Some Files
OtowoSamuel Jan 11, 2025
f6ee97c
Update files for AWS not GCP
OtowoSamuel Mar 5, 2025
edd4085
Updated infra_main with latest changes
OtowoSamuel Mar 5, 2025
a44e318
Updated infra_main with latest changes
OtowoSamuel Mar 5, 2025
78961b3
Updated infra_main with latest changes
OtowoSamuel Mar 5, 2025
66ef84c
Updated infra_main with latest changes
OtowoSamuel Mar 5, 2025
1293156
Updated infra_main with latest changes
OtowoSamuel Mar 5, 2025
82b3c83
Updated infra_main with latest changes
OtowoSamuel Mar 5, 2025
4e2e584
Updated infra_main with latest changes
OtowoSamuel Mar 5, 2025
181a269
Updated infra_main with latest changes
OtowoSamuel Mar 5, 2025
ee1c350
Updated infra_main with latest changes
OtowoSamuel Mar 5, 2025
a3b27bc
Updated infra_main with late st changes
OtowoSamuel Mar 5, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .env
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
COMPOSE_FILE=docker-compose.yml:docker-compose.monitoring.yml
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
.terraform/**/*.x5 filter=lfs diff=lfs merge=lfs -text
16 changes: 16 additions & 0 deletions .github/workflows/cd-application.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
name: CD - Deploy Application Stack
on:
push:
branches:
- deployment

jobs:
deploy-stack:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Run Docker Compose
run: |
docker compose pull
docker compose up -d
52 changes: 52 additions & 0 deletions .github/workflows/ci-application.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
name: CI - Build and Push Docker Images
on:
push:
branches:
- integration

jobs:
build-and-push:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3

- name: Log in to Docker Hub
run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin

- name: Build Docker Images
run: |
sudo docker compose build frontend
sudo docker compose build backend

- name: Pull Dependencies
run: |
sudo docker compose pull db adminer proxy nginx prometheus grafana loki promtail cadvisor

- name: Tag Docker Images
run: |
sudo docker tag cv-challenge01-frontend:latest otowosamuel/frontend:latest
sudo docker tag cv-challenge01-backend:latest otowosamuel/backend:latest
sudo docker tag postgres:latest otowosamuel/postgres:latest
sudo docker tag adminer:latest otowosamuel/adminer:latest
sudo docker tag jc21/nginx-proxy-manager:latest otowosamuel/nginx-proxy-manager:latest
sudo docker tag nginx:latest otowosamuel/nginx:latest
sudo docker tag prom/prometheus:latest otowosamuel/prometheus:latest
sudo docker tag grafana/grafana:latest otowosamuel/grafana:latest
sudo docker tag grafana/loki:2.8.2 otowosamuel/loki:2.8.2
sudo docker tag grafana/promtail:2.8.2 otowosamuel/promtail:2.8.2
sudo docker tag gcr.io/cadvisor/cadvisor:latest otowosamuel/cadvisor:latest

- name: Push Docker Images
run: |
sudo docker push otowosamuel/frontend:latest
sudo docker push otowosamuel/backend:latest
sudo docker push otowosamuel/postgres:latest
sudo docker push otowosamuel/adminer:latest
sudo docker push otowosamuel/nginx-proxy-manager:latest
sudo docker push otowosamuel/nginx:latest
sudo docker push otowosamuel/prometheus:latest
sudo docker push otowosamuel/grafana:latest
sudo docker push otowosamuel/loki:2.8.2
sudo docker push otowosamuel/promtail:2.8.2
sudo docker push otowosamuel/cadvisor:latest
37 changes: 37 additions & 0 deletions .github/workflows/terraform-apply.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: Apply Terraform which triggers Ansible

on:
push:
branches:
- infra_main

jobs:
apply:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3

- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v2
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: eu-north-1

- name: Set up Terraform
uses: hashicorp/setup-terraform@v2

- name: Terraform Init
run: terraform init

- name: Refresh Terraform State
run: terraform refresh

- name: Terraform Plan
run: terraform plan

- name: Terraform Apply
run: terraform apply -auto-approve


33 changes: 33 additions & 0 deletions .github/workflows/terraform-plan.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: Terraform Plan and Cost Estimation

on:
pull_request:
branches:
- infra_main

jobs:
plan:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write

steps:
- name: Checkout code
uses: actions/checkout@v3

- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v2
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: eu-north-1

- name: Set up Terraform
uses: hashicorp/setup-terraform@v2

- name: Terraform Init
run: terraform init

- name: Terraform Plan
run: terraform plan -out=tfplan
33 changes: 33 additions & 0 deletions .github/workflows/terraform-validate.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: Terraform Validate

on:
push:
branches:
- infra_features

jobs:
validate:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3

- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v2
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: eu-north-1

- name: Set up Terraform
uses: hashicorp/setup-terraform@v2
with:
terraform_version: 1.5.6

- name: Terraform Init
run: terraform init

- name: Validate Terraform configuration
run: terraform validate


7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Ignore virtual environment
venv/

# Ignore system files
*.pyc
__pycache__/
.DS_Store
86 changes: 86 additions & 0 deletions ansible_files/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
- hosts: web_servers
become: true
tasks:
- name: Create Docker network named monitoring-network
docker_network:
name: monitoring-network
driver: bridge

- name: Copy Promtail config
copy:
content: |
server:
http_listen_port: 9080
grpc_listen_port: 0

clients:
- url: http://loki:3100/loki/api/v1/push

positions:
filename: /tmp/positions.yaml

scrape_configs:
- job_name: system
static_configs:
- targets:
- localhost
labels:
job: varlogs
__path__: /var/log/*.log
dest: ./promtail-config.yml

- name: Copy Loki config
copy:
content: |
server:
http_listen_port: 9080
grpc_listen_port: 0

positions:
filename: /tmp/positions.yaml

clients:
- url: http://loki:3100/loki/api/v1/push

scrape_configs:
- job_name: system
static_configs:
- targets:
- localhost
labels:
job: varlogs
__path__: /var/log/*log

- job_name: docker
static_configs:
- targets:
- localhost
labels:
job: docker_logs
__path__: /var/lib/docker/containers/*/*-json.log
dest: ./loki-config.yaml

- name: Copy Prometheus config
copy:
content: |
global:
scrape_interval: 15s

scrape_configs:
- job_name: 'prometheus'
metrics_path: "/prometheus/metrics"
static_configs:
- targets: ['prometheus:9090']

- job_name: 'grafana'
static_configs:
- targets: ['grafana:3000']

- job_name: 'cadvisor'
static_configs:
- targets: ['cadvisor:8080']

- job_name: 'loki'
static_configs:
- targets: ['loki:3100']
dest: ./prometheus.yml
Loading