fix(worker): mount host devices for disc detection
Ampel / ampel (push) Failing after 30s

- Add direct device mounts (cdrom, dvd, sr0) to worker
- Add SYS_ADMIN capability for udev access
- Install isoinfo and udev in worker container
- Add pyudev for device monitoring
- Update udev rules with correct paths
This commit is contained in:
Hitonabi
2026-07-23 12:15:55 +02:00
parent 9c010d2dc5
commit 61af353559
8 changed files with 188 additions and 4 deletions
+52
View File
@@ -0,0 +1,52 @@
# Rippy udev-Setup
## Problem
Rippy findet kein Laufwerk, obwohl eines am Host angeschlossen ist.
## Ursache
Die `docker-compose.yml` nutzte anonyme Volumes für `/dev/disc`, `/dev/cdrom`, `/dev/dvd`:
```yaml
volumes:
- disc:/dev/disc # ❌ Anonymes Volume, leer
```
## Lösung
Direkte Mounts vom Host in den Worker-Container:
### 1. docker-compose.yml anpassen
```yaml
volumes:
- /dev/cdrom:/dev/cdrom:ro
- /dev/dvd:/dev/dvd:ro
- /dev/sr0:/dev/sr0:ro
- disc:/dev/disc # ✅ Shared-Mount für udev-Symlinks
```
### 2. Worker-Dockerfile erweitern
- `isoinfo` für Disc-Typ-Erkennung
- `udev` für Geräteverwaltung
### 3. udev-Regel installieren
Kopiere `99-disc-ripper.rules` nach `/etc/udev/rules.d/`
### 4. udev-Daemon ausführen
Der Daemon (`udev_daemon.py`) läuft im Worker-Container und erstellt Symlinks mit UUID/Serial.
## Installation auf Arcane VM
```bash
cd /path/to/rippy/udev
bash install-arcane.sh
```
## Testen
1. Leg eine CD/DVD ein
2. Logs prüfen: `docker logs -f rippy-worker`
3. Symlinks: `docker exec rippy-worker ls -la /dev/disc`
4. Devices: `docker exec rippy-worker ls -la /dev/cdrom /dev/dvd /dev/sr0`
## Dateien
- `99-disc-ripper.rules` — udev-Regel für Einwurf/Auswurf
- `udev_daemon.py` — Daemon für Disc-Erkennung
- `rippy-udev.service` — systemd-Service (optional)
- `install-arcane.sh` — Installations-Skript für Arcane VM