Overview • Features • Quick Start • Detailed Setup • Tools Integrated • Contributing
Welcome to the DevOps-All-In-One-Playground - your comprehensive hands-on laboratory for mastering modern DevOps practices! This playground is designed to provide a rich learning environment for both beginners and seasoned professionals, offering a full-stack application setup with integrated DevOps tools.
This repository is a one-stop resource for DevOps engineers, featuring:
- A complete sample application stack using Python for the backend and React for the frontend.
- Pre-configured environments for essential DevOps tools.
- Comprehensive monitoring and observability setup.
- Real-world deployment scenarios and examples.
- Backend: Python/Flask REST API with PostgreSQL
- Frontend: React-based user interface
- Database: PostgreSQL with initial schema and migrations
- Containerization: Docker with multi-stage builds
- Orchestration: Kubernetes configurations for scalable deployments
- CI/CD: Jenkins, GitHub Actions, and GitLab CI for automated pipelines
- GitOps: ArgoCD for managing Kubernetes resources
- Infrastructure as Code: Terraform for provisioning cloud resources
- Configuration Management: Ansible for automating application setup and configuration
- Metrics: Prometheus for collecting and querying metrics
- Visualization: Grafana dashboards for data visualization
- Tracing: OpenTelemetry with Jaeger for distributed tracing
- Logging: ELK Stack integration for centralized logging
- Docker & Docker Compose
- Git
- Kubernetes cluster (optional)
- AWS account (optional)
- Python environment
- Ansible installed
- Frontend: http://localhost:3000
- Backend API: http://localhost:5000
- Grafana: http://localhost:3001
- Prometheus: http://localhost:9090
DevOps-All-In-One-Playground/
├── sample-app/ # Sample application
│ ├── backend/ # Python/Flask backend
│ │ ├── app.py # Main application file
│ │ ├── requirements.txt # Python dependencies
│ │ ├── Dockerfile # Dockerfile for backend
│ │ ├── tests/ # Unit tests for backend
│ │ │ └── test_app.py # Example test file
│ │ └── README.md # Documentation for backend
│ ├── frontend/ # React frontend
│ │ ├── src/ # Source files
│ │ ├── public/ # Public assets
│ │ ├── package.json # Node.js dependencies
│ │ ├── Dockerfile # Dockerfile for frontend
│ │ └── README.md # Documentation for frontend
│ ├── database/ # Database setup
│ │ ├── schema.sql # SQL schema
│ │ ├── Dockerfile # Dockerfile for database
│ │ └── README.md # Documentation for database
│ └── README.md # Overall app documentation
├── docker/ # Docker configurations
│ ├── docker-compose.yml # Docker Compose file
│ ├── .env # Environment variables
│ └── README.md # Docker setup instructions
├── kubernetes/ # Kubernetes manifests
│ ├── deployment.yaml # Deployment configuration
│ ├── service.yaml # Service configuration
│ ├── ingress.yaml # Ingress configuration
│ ├── configmap.yaml # ConfigMap for environment variables
│ └── README.md # Kubernetes setup instructions
├── terraform/ # Terraform configurations
│ ├── main.tf # Main Terraform file
│ ├── variables.tf # Variables for Terraform
│ ├── outputs.tf # Outputs for Terraform
│ └── README.md # Terraform setup instructions
├── cicd/ # CI/CD configurations
│ ├── Jenkinsfile # Jenkins pipeline script
│ ├── .github/ # GitHub Actions workflows
│ │ └── workflows/
│ │ └── ci.yml # CI workflow for GitHub Actions
│ └── README.md # CI/CD setup instructions
├── argocd/ # ArgoCD setup
│ ├── applications/ # ArgoCD application definitions
│ │ └── quiz-platform.yaml # ArgoCD app for quiz platform
│ ├── projects/ # ArgoCD project definitions
│ │ └── devops-project.yaml # ArgoCD project definition
│ └── README.md # ArgoCD setup instructions
├── observability/ # Monitoring tools
│ ├── prometheus/ # Prometheus configuration
│ ├── grafana/ # Grafana configuration
│ ├── opentelemetry/ # OpenTelemetry collector
│ ├── jaeger/ # Jaeger tracing setup
│ └── README.md # Observability setup instructions
├── docs/ # Documentation
│ ├── INSTALL.md # Installation instructions
│ ├── USAGE.md # Usage instructions
│ ├── CONTRIBUTING.md # Contribution guidelines
│ └── README.md # General repo documentation
└── LICENSE # MIT License
- Python: Backend development
- Docker & Docker Compose: Containerization
- Kubernetes: Orchestration
- Helm Charts: Kubernetes package management
- ArgoCD: GitOps continuous delivery
- Terraform: Infrastructure as Code
- Ansible: Configuration management
- Jenkins: Continuous integration
- GitHub Actions: Workflow automation
- GitLab CI: CI/CD pipelines
- Prometheus: Metrics collection
- Grafana: Data visualization
- OpenTelemetry & Jaeger: Distributed tracing
- ELK Stack: Logging
- Deploy the sample application
- Monitor basic metrics
- Implement simple CI/CD pipeline
- Kubernetes deployment
- Monitoring and alerting
- Distributed tracing
- GitOps with ArgoCD
- Infrastructure as Code
- Custom metrics and SLOs
bash
Deploy monitoring stack kubectl apply -f observability/
Access Grafana kubectl port-forward svc/grafana 3000:3000
We welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Create your feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Need help? Check out:
Made with ❤️ for the DevOps community