This repository showcases the practical part of my diploma thesis, completed at the University of West Attica, Department of Informatics and Computer Engineering. The project focuses on Infrastructure as Code (IaC) and DevOps practices for provisioning cloud infrastructure and automating deployments using Terraform, GitLab CI/CD, and Docker.
- Design and provision cloud infrastructure using Terraform
- Automate Docker installation on provisioned VM via remote-exec
- Build and deploy a Dockerized application using GitLab CI/CD pipeline
- Emphasize end-to-end Infrastructure as Code and Continuous Deployment practices
- Compare Iac tools and evaluate cloud automation workflows
| Tool | Purpose |
|---|---|
| Terraform | Infrastructure provisioning on Linode |
| GitLab CI/CD | Automating infrastructure deployment and app delivery |
| Docker | Containerization and runtime environment |
| Linode | Cloud provider (IaaS) |
| Git | Version control |
| Linux (Ubuntu) | VM base image and shell environment |
terraform-ci-cd-infra/
│
├── screenshots/ # Diagrams and output visuals
│ ├── concepts/ # Theoretical materials and DevOps diagrams
│ └── implementation/ # Terraform, pipeline, Docker provisioning screenshots
|
├── terraform/ # Terraform configuration files (.tf)
│ ├── README.md
│ ├── drosos.tf
│ ├── linode-vm01.tf
│ ├── output.tf
│ └── variables.tf
│
├── .gitlab-ci.yml # GitLab CI/CD pipeline configuration
├── Katsimpras_Drosos_diploma_thesis.pdf # Full thesis report (Greek language)
├── LICENSE
└── README.md # This file
The Terraform files define:
- A Linode VM using dynamic variables (
VM_NAME,VM_IMAGE,VM_REGION, etc.) - SSH access using provided public/private keys
- A
remote-execprovisioner to install Docker on VM creation - Outputs the public IP for deployment
See
terraform/for detailed configuration.
The .gitlab-ci.yml file automates:
- Terraform
init,plan, andapply - Testing a Python demo app (not included here)
- Docker image build and push
- Deploying the image on the provisioned Linode VM using SSH
Full pipeline stages and Docker deployment shown in
screenshots/implementation/
| Concepts (Theory) | Implementation (Hands-On) |
|---|---|
| DevOps lifecycle, IaC comparison | Terraform plan output, CI/CD pipeline stages |
| Cloud architecture diagrams | Docker installed on VM, deployed container app |
More visuals in the
screenshots/folder.
- Hands-on application of Infrastructure as Code and DevOps principles
- Integration of open-source tooling in cloud provisioning
- Practical experience with cloud deployment and automation workflows
- Team-ready mindset for CI/CD-based engineering environments
- The deployed application is a simple demo app used for testing CI/CD and Docker functionality.
- This repository does not include application code for clarity and licensing reasons.
- Secrets and credentials are managed via GitLab CI/CD project variables.
You can find the full diploma thesis report here (written in Greek).
Drosos Katsimpras
📍 Athens, Greece
🎓 University of West Attica — Informatics & Computer Engineering
🔗 LinkedIn
🔗 GitHub
This project is part of my personal learning journey and academic work.
If you'd like to discuss collaboration or opportunities in cloud or DevOps roles, feel free to connect or contact me.
This repository is licensed under the MIT License.