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:
| # macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Oder mit Homebrew (macOS)
brew install uv
|
Projekt Setup
| # Alle Dependencies installieren (erstellt automatisch .venv)
uv sync
# Oder für Development Dependencies:
uv sync --group dev
|
🚀 Verwendung
Ansible-Befehle ausführen
| # 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
| # 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
| ├── 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
Dependencies aktualisieren
| # 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.