Skip to main content

YAML Based homeLAB

Project description

#Labops - A declarative, YAML-based homelab manager

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.

  1. Configuration parsing: It reads a declarative .yml inventory representing your homelab layout, target servers, credentials, and settings.
  2. Validation: It validates the YAML structure and data format to stop misconfigurations early.
  3. 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:

  1. Open the project in VS Code (or any editor supporting Dev Containers).
  2. When prompted, click Reopen in Container (this builds your development environment with Python, Ansible, and other necessary CLI tools pre-installed).
  3. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

labops-0.3.1.tar.gz (110.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

labops-0.3.1-py3-none-any.whl (35.0 kB view details)

Uploaded Python 3

File details

Details for the file labops-0.3.1.tar.gz.

File metadata

  • Download URL: labops-0.3.1.tar.gz
  • Upload date:
  • Size: 110.2 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

Hashes for labops-0.3.1.tar.gz
Algorithm Hash digest
SHA256 39d1a39d6fdc8fbc6aab97ff001e7a2fb85734db2911dfe70c53f1406d56dcdc
MD5 e9ca6fa3adaaf8dec58b131a15aa217c
BLAKE2b-256 4cdfdd6c2700111f176123a97f21f36ab78d8ed9731af6bfca060d1286abb72d

See more details on using hashes here.

File details

Details for the file labops-0.3.1-py3-none-any.whl.

File metadata

  • Download URL: labops-0.3.1-py3-none-any.whl
  • Upload date:
  • Size: 35.0 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

Hashes for labops-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 82e51ae8bdde7530eb37f79e35402e4ef21e117dcd13f90e9e7b7e56abf983be
MD5 baef58ec99a10eaa1329d109e2590d5e
BLAKE2b-256 a9fed0385f9353da3da8a91f15fb8e2a4f614c5a4dc9ab14aa7654bc0bbcf087

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page