A lightweight Flask WebApp, developed as part of a hands-on DevOps training project.
The project demonstrates a full DevOps lifecycle, including:
- 🤖 CI/CD via GitHub Actions
- 🐳 Containerization with Docker
- 📦 GitHub Container Registry (GHCR)
- 🌍 Infrastructure as Code with Terraform
- ⚙️ Configuration Management via Ansible
- 🌐 Reverse Proxy using nginx in Docker
- Minimal Flask application returning:
Hello, DevOps from Frost! - Automated Docker image build + push to GHCR
- Declarative infrastructure using Terraform
- Automatic deployment of nginx reverse proxy via Ansible
- Multiple launch options (Docker / Compose / Terraform + Ansible)
GitHub Actions → builds + pushes → GHCR
Local VM (Debian):
├── Terraform → deploys docker network + containers (web + redis)
├── Ansible → deploys nginx reverse proxy
└── Docker → runtime for all components
docker pull ghcr.io/frostoff92/frost-webapp:latest
docker run -d -p 5000:5000 ghcr.io/frostoff92/frost-webapp:latestApp available at:
👉 http://localhost:5000
docker compose up -dThis is the recommended way to deploy the full infrastructure.
- Docker Engine
- Terraform ≥ 1.3
- Ansible ≥ 2.19
- Community Docker collection:
ansible-galaxy collection install community.dockercd infra/terraform
terraform init
terraform apply -auto-approveTerraform will:
- Pull Docker images
- Create network
lab_net - Deploy:
frost-webappredis
- Output:
web_url = http://localhost:5000
cd ../ansible
ansible-playbook -i inventory.ini site.ymlRoutes:
- App → http://localhost
- Healthcheck → http://localhost/healthz
devops-lab/
├── app/ # Flask application
├── Dockerfile # WebApp image
├── docker-compose.yml # Simple local deployment
├── .github/workflows/ # CI/CD pipeline (GitHub Actions)
└── infra/
├── terraform/ # IaC: containers, networks, outputs
└── ansible/ # Reverse proxy setup
- Python + Flask
- Docker / Docker Compose
- GitHub Actions CI/CD
- GHCR
- Terraform (kreuzwerker/docker provider)
- Ansible (community.docker)
- nginx
- Redis
- Monitoring (Prometheus + Grafana)
- Kubernetes deployment (k3s / Kind)
- Helm chart packaging
- Auto-deploy infrastructure via GitHub Actions
Frost — DevOps/SRE in progress
“Пусть инфраструктура будет с вами.”