YAML Based homeLAB
Project description
A declarative, YAML-based homelab manager. labops is a CLI tool designed to simplify, automate, and standardize the setup, configuration, and maintenance of your homelab infrastructure utilizing simple configuration files and powerful backend automation.
Features
Current Capabilities
- Declarative YAML Configuration: Define your complete homelab environment comprehensively using simple YAML configuration files.
- Host Management: Automated setup, initialization, and system updates for a variety of host operating systems (Alpine, Debian, RedHat) powered by integrated Ansible playbooks.
Roadmap & Future Scope
- Docker Stack Management: Seamlessly deploy, spin up, and manage Docker Compose stacks across your nodes.
- Proxmox LXC: Update Proxmox Linux Containers (LXC) natively.
- DNS Automation: Automated updating of internal DNS records.
- Reverse Proxy Orchestration: Manage, update, and automate reverse proxy routes
How it Works
labops acts as a bridge between simple, human-readable YAML configurations and powerful Ansible Commands.
- Configuration parsing: It reads a declarative
.ymlinventory representing your homelab layout, target servers, credentials, and settings. - Validation: It validates the YAML structure and data format to stop misconfigurations early.
- Execution: Based on the commands executed, it triggers internal Python routines or dispatches built-in Ansible playbooks targeting the defined hosts. This ensures consistent host setups, OS updates (Debian, RedHat, Alpine), and more without writing raw playbook files manually.
Installation
You can install labops easily via pip:
pipx install labops
#or
pip install labops
Since labops is a standalone CLI tool, using pipx is highly recommended to isolate its dependencies
Usage
Once installed, the labops command becomes available. Point it to your YAML configuration file (e.g., test-samples/homelab-complete.yml):
# View all available CLI commands
labops --help
# Example: Run a setup routine for all hosts
labops host update all
Development & Building
This project utilizes Dev Containers to provide a seamless, consistent development environment, and uses uv for lightning-fast Python package management.
1. Development Environment
To start developing locally without installing system-level dependencies:
- Open the project in VS Code (or any editor supporting Dev Containers).
- When prompted, click Reopen in Container (this builds your development environment with Python, Ansible, and other necessary CLI tools pre-installed).
- Once the container is running and your terminal is open, sync the dependencies and activate the virtual environment:
# Create the virtual environment and install dependencies + the labops CLI
uv sync
# Activate the virtual environment
source .venv/bin/activate
# Now you can run the CLI
labops --help
2. Building the Package
The package does not have to be manually updated to PyPi, as it utalizes github actions to build and publish it.
To build the standard Python distribution files locally (Wheel .whl and Source Distribution .tar.gz) for testing:
uv build
This will generate the artifacts inside the dist/ directory.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file labops-0.2.1.tar.gz.
File metadata
- Download URL: labops-0.2.1.tar.gz
- Upload date:
- Size: 100.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cd2665c49f75bc10be07850f8995ba380e030ff56ed0cf115ef9614ec5449c33
|
|
| MD5 |
25b3db21de448795b12f1c5a75ce801e
|
|
| BLAKE2b-256 |
79951171e868ac07bb9feb800d8eaea11883f4e5cd94a4ee33f152a30348e283
|
File details
Details for the file labops-0.2.1-py3-none-any.whl.
File metadata
- Download URL: labops-0.2.1-py3-none-any.whl
- Upload date:
- Size: 26.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
83a0d5722cb00eb7c533e9edb6d60bb396cdb4a050980dbb036f5e1ab826d324
|
|
| MD5 |
674a3f05e72e9e96bfce8dbdcc688998
|
|
| BLAKE2b-256 |
65a1245f844330d82f0a972f19499de468d1f0fe1a6a7a1f7a10da16590144b5
|