Zum Inhalt

Ansible Homelab

Dieses Repository enthält Ansible-Playbooks und -Rollen für die Verwaltung einer Homelab-Infrastruktur.

🐍 Python & uv Setup

Wichtig: Python 3.14+ ist erforderlich. Das Projekt nutzt uv für modernes Dependency-Management.

uv Installation

Falls uv noch nicht installiert ist:

1
2
3
4
5
# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh

# Oder mit Homebrew (macOS)
brew install uv

Projekt Setup

1
2
3
4
5
# Alle Dependencies installieren (erstellt automatisch .venv)
uv sync

# Oder für Development Dependencies:
uv sync --group dev

🚀 Verwendung

Ansible-Befehle ausführen

1
2
3
4
5
6
7
8
# Mit uv run (empfohlen)
uv run ansible-lint -p
uv run ansible-playbook -i inventory/hosts.yml playbooks/proxmox/ping.yml

# Oder Virtual Environment aktivieren
source .venv/bin/activate
ansible-lint -p
deactivate  # um zu deaktivieren

Update-Skripte

Alle Skripte im scripts/ Ordner wurden auf uv umgestellt und enthalten automatische uv-Checks:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# Master Update (führt alle anderen Updates aus)
./scripts/master_update.sh

# Einzelne Services
./scripts/update_docker_base.sh      # Docker Base Services
./scripts/update_docker01.sh         # Docker Services
./scripts/update_docker_runner.sh    # Docker Runner
./scripts/update_idp.sh              # Identity Provider Services

# Weitere Skripte
./scripts/ping.sh                    # Connectivity Test
./scripts/cert_renew.sh              # Zertifikat-Erneuerung

✅ uv-Check: Alle Skripte prüfen automatisch, ob uv installiert ist und geben hilfreiche Fehlermeldungen aus.

Task Runner

Das Projekt beinhaltet ein task Skript, welches häufige Befehle vereinfacht.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# Hilfe anzeigen
./task help

# Versionen anzeigen
./task version

# Ansible installieren/updaten
./task install
./task upgrade

# Linting
./task lint

Manueller Playbook-Aufruf

1
2
3
4
5
# Update-Beispiel
uv run ansible-playbook -i inventory/hosts.yml --vault-password-file ./.vault_pass playbooks/vie/vie_update.yml --limit vie -t update

# Ping-Test
uv run ansible-playbook -i inventory/hosts.yml playbooks/proxmox/ping.yml

📁 Projektstruktur

1
2
3
4
5
6
7
8
├── inventory/          # Ansible Inventar
├── playbooks/          # Ansible Playbooks
│   └── proxmox/       # Proxmox-spezifische Playbooks
├── roles/             # Ansible Rollen für verschiedene Services
├── scripts/           # Update- und Maintenance-Skripte
├── pyproject.toml     # Python Dependencies (uv)
├── uv.lock           # Lock-File für reproduzierbare Builds
└── .python-version   # Python Version (3.14)

🛠️ Entwicklung

Linting

1
uv run ansible-lint -p

Dependencies aktualisieren

1
2
3
4
5
# Sync nach pyproject.toml Änderungen
uv sync

# Lock-File aktualisieren
uv lock

🔒 Vault

Das Projekt verwendet Ansible Vault für sensible Daten. Die Vault-Passwort-Datei .vault_pass muss lokal erstellt werden.