This project showcases my hands-on DevOps setup where I built a complete multi-tier environment for a Simple Java Web Application using Vagrant, VirtualBox, and Linux.
The entire stack was deployed manually first and then fully automated using shell provisioning.
This setup replicates a realistic production-like environment where each major service runs on its own virtual machine.
It helped me understand how backend services integrate and how to automate Infrastructure as Code on a local system.
- Provision 5 VMs using Vagrant + VirtualBox
- Configure database, cache, message broker, app server, and web server
- Deploy a Java application on Tomcat
- Route traffic through Nginx reverse proxy
- Validate full end-to-end workflow (DB β App β Cache β Queue)
- Automate provisioning using Bash scripts
| Service | Role | VM Name | IP Address | OS |
|---|---|---|---|---|
| MySQL | Database | db01 |
192.168.56.15 | CentOS 9 |
| Memcached | Caching Layer | mc01 |
192.168.56.14 | CentOS 9 |
| RabbitMQ | Message Broker | rmq01 |
192.168.56.13 | CentOS 9 |
| Tomcat | Application Server | app01 |
192.168.56.12 | CentOS 9 |
| Nginx | Reverse Proxy / Web Layer | web01 |
192.168.56.11 | Ubuntu 22.04 |
- Vagrant β VM provisioning
- VirtualBox β Hypervisor
- Linux (CentOS & Ubuntu)
- MariaDB / MySQL β Database
- Memcached β Caching
- RabbitMQ β Messaging Queue
- Tomcat 10 β Java application server
- Nginx β Web server + reverse proxy
- Maven β Build Java WAR file
- Git & GitHub β Version control
Below are the screenshots demonstrating each major step of the project setup.
This project demonstrates:
β Full-stack environment provisioning
β Manual + automated setup
β Understanding of multi-tier architecture
β Hands-on Linux administration
β Real-world integration across 5 services
β Effective use of Infrastructure as Code
β Service validation through actual UI & logs
This was one of the most practical DevOps labs I've completed, and the screenshots above show every part of the environment working together as a functional system.