DevOps Bootcamp Final Project 2025
Project Name: Trust Me, I'm a DevOps Engineer
📌 Overview
This repository contains the final capstone project for the DevOps Bootcamp 2025.
The objective is to design, provision, configure, deploy, monitor, and document a complete DevOps-based system using industry-standard tools and best practices.
🏗️ Architecture Overview
The system is built on AWS with a secure public/private subnet layout:
- Terraform for infrastructure
- Ansible for configuration
- Docker for the web app
- Prometheus and Grafana for monitoring
- Cloudflare Tunnel for secure access
- GitHub Pages for documentation
🧰 Technology Stack
- Cloud: AWS (ap-southeast-1)
- IaC: Terraform
- Config: Ansible
- Containers: Docker
- Monitoring: Prometheus, Grafana
- DNS / Security: Cloudflare
- CI/CD: GitHub Actions (GitHub Pages; optional Docker → ECR)
📁 Repository Structure
devops-bootcamp-project/
├── .github/
│ └── workflows/ # GitHub Actions CI/CD
├── terraform/ # Terraform
├── ansible/ # Ansible playbooks and roles
└── README.md # Project docs (GitHub Pages)
🚀 CI/CD
Required: GitHub Pages
- Workflow:
.github/workflows/github-pages.yml - Purpose: Publish the documentation site to GitHub Pages when
README.md(or the workflow) changes. - URL:
https://<username>.github.io/devops-bootcamp-project
Setup:
- Settings → Pages
- Set Source to GitHub Actions.
No extra secrets are needed for Pages.
Bonus: Docker → ECR (optional)
- Workflow:
.github/workflows/docker-build-push.yml - Purpose: Build the app image, push it to AWS ECR.
- Triggers: Pushes to
master(whenapp/,Dockerfile, or the workflow changes) or manual run.
Setup (optional):
- Create an IAM user (or use an existing one) with programmatic access.
- Grant that user access to ECR (e.g.
AmazonEC2ContainerRegistryFullAccessor a custom ECR policy). - Create access keys for the user.
- Add two repository secrets:
AWS_ACCESS_KEY_ID= your access key IDAWS_SECRET_ACCESS_KEY= your secret access key
To deploy the new image on the web server (pull and run), run the Ansible playbook after a push (see ansible/README.md).
📚 More
- CI/CD details: .github/CI_CD.md
- Ansible usage: ansible/README.md