Skip to content
/ data-science Public template

🌟 An end-to-end full-stack data science project, including modelling, MLOps, and data storytelling. ✨

License

Notifications You must be signed in to change notification settings

nnthanh101/data-science

Repository files navigation

πŸ”₯ CloudOps Automation at Scale πŸ¦…

🌟 You can use CloudOps Automation Runbooks, built on Jupyter Notebooks, to quickly create SRE RunBooks for Runbook Automation and Cloud Infrastructure Management! 🌐

Important

πŸ† Mission: Our mission is to simplify CloudOps Automation for DevOps and SRE teams by providing an extensive, community-driven repository of actions and runbooks that streamline day-to-day operations.

Note

πŸ‘οΈ Vision: Our vision is to be the πŸ₯‡ One-Stop Multi-Cloud Platform Engineering & Best Practices Solution for all CloudOps Automation needs, allowing DevOps and SRE teams to automate their workflows with ease, improve efficiency, and minimize toil.

🐍 Runbooks PyPI version 🦾 GitHub Container Registry

Nhat-Thanh Nguyen Thanh Nguyen Nhat-Thanh Nguyen

πŸ› οΈ Features

  • πŸ₯‰ βœ…Lightning-Fast Toolchain: Powered by πŸ“¦ uv - Next-generation Python dependency and build management, πŸ’… ruff - Linting and formatting at blazing speed, and πŸ§ͺ pytest - Robust testing framework with coverage reports.
  • πŸ₯ˆ βœ…Effortless CI/CD Pipelines: πŸ› οΈ Taskfile Automation - Say goodbye to manual SDLC repetitive tasks, 🐳 Containerized Workflows – πŸ›‘οΈ Security-first practices and Multi-stage Wolfi-based Docker builds for scalable production-ready environments, and βš™οΈ Auto-publish to PyPI and GitHub Container Registry (GHCR) with GitHub Actions.
  • πŸ₯‡ β˜‘οΈCloudOps Automation and FinOps Toolkit – Pre-configured hybrid-cloud workflows and seamlessly integrations (jupyterlab, mkdocs, boto3, moto) for managing cloud infrastructure 🌐.
Feature Toolchain Purpose
πŸ› οΈ Configuration pyproject.toml Centralized configuration for dependencies, testing, and linting.
🧹 Task Automation Taskfile Automates repetitive tasks like linting, testing, and publishing.
πŸ“¦ Python Dependencies uv Lightning-fast dependency resolution, caching, and builds.
πŸ’… Linting & Formatting ruff Enforces code quality standards, auto-formatting, and import sorting.
πŸ§ͺ Testing Framework pytest Comprehensive unit tests, integration tests with coverage reporting.
🐳 Docker Integration Dockerfile + DevContainer Optimized wolfi-based multi-stage builds for CI/CD and local development environments.
🦾 CI/CD Pipelines GitHub Actions Automated builds, tests, and deployments to PyPI and GHCR.
πŸ“ Security Compliance chainguard/wolfi-base + SBOM + Attestations Ensures compliance, vulnerability scanning, and security transparency.

WIP

  • πŸ“š auto doc generation
  • CLI Tools – Typer simplifies automation for AWS resources.
  • Logging – Loguru ensures structured logs for debugging.
  • 🐳 CI/CD Optimized Docker Image runs when a new release is created pushing to gh registry
  • 🦾 GitHub actions:
    • auto publish to pypi on push on main
    • auto creating a new tag on push on main, sync versions
    • run tests and lint on dev and main when a PR is open

πŸš€ Quick Start

1. Clone the Repository

git clone https://github.com/nnthanh101/runbooks.git
cd runbooks

2. Install Dependencies and Run CI/CD Pipelines

echo "Install Python dependencies using UV"
task install

echo "Run CI/CD pipeline tasks: clean, lint, format, test, and build"
task ci

echo "Publish the project package to PyPI"
task publish

3. Run in DevContainer 🐳

  1. Open the project in VSCode.
  2. Install the Remote - Containers extension.
  3. Reopen in Container:
    Command Palette Ctrl+Shift+P β†’ Reopen in Container.

Project Structure

πŸ›  End-to-end Production-grade project structure for successful πŸ’Ž CloudOps Automation and Visual Analytics FinOps projects πŸš€

cloudops-automation/
β”œβ”€β”€ .devcontainer/     ## Dev Container configurations
β”‚   └── Dockerfile     ## Container image build file
β”œβ”€β”€ .github/           ## CI/CD workflows
β”‚   β”œβ”€β”€ workflows/     ## GitHub Actions workflows
β”‚   └── templates/     ## Workflow templates
β”œβ”€β”€ .vscode/           ## IDE-specific configurations
β”œβ”€β”€ config/            ## Configuration files (YAML, JSON)
β”œβ”€β”€ data               πŸ” Where all your raw and processed data files are stored.
β”‚   β”œβ”€β”€ external       <- Data from third-party sources.
β”‚   β”œβ”€β”€ interim        <- Intermediate data that has been transformed.
β”‚   β”œβ”€β”€ processed      <- The final, canonical data sets for modeling.
β”‚   └── raw            <- The original, unprocessed, immutable data dump.
β”‚
β”œβ”€β”€ docs               πŸ““ A default mkdocs project; see mkdocs.org for details
β”‚   β”œβ”€β”€ api/                 ## API documentation
β”‚   β”œβ”€β”€ architecture/        ## Architecture diagrams
β”‚   β”œβ”€β”€ tutorials/           ## Tutorials and guides
β”‚   β”œβ”€β”€ getting-started.md   ## Quickstart guide
β”‚   └── index.md             ## Overview documentation
β”‚
β”œβ”€β”€ logs/                    ## Log files for debugging
|
β”œβ”€β”€ models             🧠 Store your trained and serialized models for easy access and versioning.
β”‚
β”œβ”€β”€ notebooks          πŸ’» Jupyter notebooks for experiments and visualization.
β”‚   β”œβ”€β”€ data_exploration.ipynb
β”‚   β”œβ”€β”€ data_preprocessing.ipynb
β”‚   β”œβ”€β”€ model_training.ipynb
β”‚   └── model_evaluation.ipynb
β”‚
β”œβ”€β”€ pyproject.toml     <- Project configuration file with package metadata for 
β”‚                         runbooks and configuration for tools like black
β”‚
β”œβ”€β”€ src/                            ## 🧩 Source code for use in this project.
β”‚   β”œβ”€β”€ runbooks/                   ## Main module for CloudOps Runbooks automation
β”‚   β”‚   β”œβ”€β”€ __init__.py             ## Package initializer
β”‚   β”‚   β”œβ”€β”€ calculator.py           ## [Python101] Calculator
β”‚   β”‚   β”œβ”€β”€ config.py
β”‚   β”‚   β”œβ”€β”€ exceptions.py
β”‚   β”‚   β”œβ”€β”€ utils.py                ## Utility scripts (logging, configs)
β”‚   β”‚   └── cleanup.py              ## Cleanup automation runbook
β”‚   β”œβ”€β”€ main.py     
β”œβ”€β”€ test/                           ## Unit and integration tests
β”‚   β”œβ”€β”€ conftest.py
β”‚   β”œβ”€β”€ __init__.py
β”‚   β”œβ”€β”€ test_calculator.py          ## [Python101] Test cases for calculator
β”‚   β”œβ”€β”€ test_utils.py               ## Test cases for utils
β”‚   └── test_exceptions.py         
β”œβ”€β”€ templates/                      ## Terraform and CloudFormation templates
β”œβ”€β”€ tools/                          ## Developer tools and scripts
β”œβ”€β”€ .dockerignore                   ## Docker ignore file
β”œβ”€β”€ .env                            ## Environment variables
β”œβ”€β”€ .gitignore                      ## Git ignore file
β”œβ”€β”€ .python-version                 ## Python version management
β”œβ”€β”€ .gitignore
β”œβ”€β”€ mkdocs.yml                      # Documentation generator configuration
β”œβ”€β”€ README.md          🀝 Explain your project and its structure for better collaboration.
β”œβ”€β”€ references         <- Data dictionaries, manuals, and all other explanatory materials.
β”‚
β”œβ”€β”€ reports            πŸ“Š Generated analysis (reports, charts, and plots) as HTML, PDF, LaTeX.
β”‚   └── figures        <- Generated graphics and figures to be used in reporting
β”‚
β”œβ”€β”€ requirements.txt   πŸ›  The requirements file for reproducing the analysis environment, for easy environment setup.
└── Taskfile           <- Taskfile with convenience commands like `task data` or `task train`

  1. Check if the image exists in GitHub Packages:
docker pull ghcr.io/nnthanh101/runbooks:latest
  1. If the image doesn't exist, build and push it:
docker build -t ghcr.io/nnthanh101/runbooks:latest .
docker login ghcr.io -u nnthanh -p GH_TOKEN
docker push ghcr.io/nnthanh101/runbooks:latest
  1. Inspect
docker inspect ghcr.io/nnthanh101/runbooks:latest

About

🌟 An end-to-end full-stack data science project, including modelling, MLOps, and data storytelling. ✨

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •