This commit is contained in:
parent
935fc42a87
commit
e97a1ec944
@ -122,8 +122,7 @@ Wants=postgresql.service redis-server.service rabbitmq-server.service photon.ser
|
|||||||
[Service]
|
[Service]
|
||||||
Type=simple
|
Type=simple
|
||||||
WorkingDirectory=/opt/reitti/
|
WorkingDirectory=/opt/reitti/
|
||||||
ExecStart=/usr/bin/java -jar /opt/reitti/reitti.jar \
|
ExecStart=/usr/bin/java --enable-native-access=ALL-UNNAMED -jar -Xmx2g reitti.jar
|
||||||
--spring.config.location=file:/opt/reitti/application.properties
|
|
||||||
TimeoutStopSec=20
|
TimeoutStopSec=20
|
||||||
KillMode=process
|
KillMode=process
|
||||||
Restart=on-failure
|
Restart=on-failure
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
# Build.func Refactoring Summary - CORRECTED
|
# Build.func Refactoring Summary - CORRECTED
|
||||||
|
|
||||||
**Datum:** 29.10.2025
|
**Datum:** 29.10.2025
|
||||||
**Backup:** build.func.backup-refactoring-*
|
**Backup:** build.func.backup-refactoring-\*
|
||||||
|
|
||||||
## Durchgeführte Änderungen (KORRIGIERT)
|
## Durchgeführte Änderungen (KORRIGIERT)
|
||||||
|
|
||||||
@ -9,7 +9,8 @@
|
|||||||
|
|
||||||
**Problem:** Nvidia-Unterstützung war überkompliziert mit Treiber-Checks, nvidia-smi Calls, automatischen Installationen
|
**Problem:** Nvidia-Unterstützung war überkompliziert mit Treiber-Checks, nvidia-smi Calls, automatischen Installationen
|
||||||
|
|
||||||
**Lösung (KORRIGIERT):**
|
**Lösung (KORRIGIERT):**
|
||||||
|
|
||||||
- ✅ Entfernt: `check_nvidia_host_setup()` Funktion (unnötige nvidia-smi Checks)
|
- ✅ Entfernt: `check_nvidia_host_setup()` Funktion (unnötige nvidia-smi Checks)
|
||||||
- ✅ Entfernt: VAAPI/NVIDIA verification checks nach Container-Start
|
- ✅ Entfernt: VAAPI/NVIDIA verification checks nach Container-Start
|
||||||
- ✅ **BEHALTEN:** `lxc.mount.entry` für alle GPU-Typen (Intel/AMD/NVIDIA) ✅✅✅
|
- ✅ **BEHALTEN:** `lxc.mount.entry` für alle GPU-Typen (Intel/AMD/NVIDIA) ✅✅✅
|
||||||
@ -18,6 +19,7 @@
|
|||||||
- ✅ User installiert Treiber selbst im Container
|
- ✅ User installiert Treiber selbst im Container
|
||||||
|
|
||||||
**GPU Config jetzt:**
|
**GPU Config jetzt:**
|
||||||
|
|
||||||
```lxc
|
```lxc
|
||||||
# Intel/AMD:
|
# Intel/AMD:
|
||||||
lxc.mount.entry: /dev/dri/renderD128 /dev/dri/renderD128 none bind,optional,create=file
|
lxc.mount.entry: /dev/dri/renderD128 /dev/dri/renderD128 none bind,optional,create=file
|
||||||
@ -31,7 +33,8 @@ lxc.mount.entry: /dev/nvidia-uvm /dev/nvidia-uvm none bind,optional,create=file
|
|||||||
lxc.cgroup2.devices.allow: c 195:0 rwm # if privileged
|
lxc.cgroup2.devices.allow: c 195:0 rwm # if privileged
|
||||||
```
|
```
|
||||||
|
|
||||||
**Resultat:**
|
**Resultat:**
|
||||||
|
|
||||||
- GPU Passthrough funktioniert rein über LXC mount entries
|
- GPU Passthrough funktioniert rein über LXC mount entries
|
||||||
- Keine unnötigen Host-Checks oder nvidia-smi calls
|
- Keine unnötigen Host-Checks oder nvidia-smi calls
|
||||||
- User installiert Treiber selbst im Container wenn nötig
|
- User installiert Treiber selbst im Container wenn nötig
|
||||||
@ -39,7 +42,8 @@ lxc.cgroup2.devices.allow: c 195:0 rwm # if privileged
|
|||||||
|
|
||||||
### 2. SSH Keys Funktionen ✅
|
### 2. SSH Keys Funktionen ✅
|
||||||
|
|
||||||
**Analyse:**
|
**Analyse:**
|
||||||
|
|
||||||
- `install_ssh_keys_into_ct()` - bereits gut strukturiert ✅
|
- `install_ssh_keys_into_ct()` - bereits gut strukturiert ✅
|
||||||
- `find_host_ssh_keys()` - bereits gut strukturiert ✅
|
- `find_host_ssh_keys()` - bereits gut strukturiert ✅
|
||||||
|
|
||||||
@ -47,22 +51,26 @@ lxc.cgroup2.devices.allow: c 195:0 rwm # if privileged
|
|||||||
|
|
||||||
### 3. Default Vars Logik überarbeitet ✅
|
### 3. Default Vars Logik überarbeitet ✅
|
||||||
|
|
||||||
**Problem:** Einige var_* defaults machen keinen Sinn als globale Defaults:
|
**Problem:** Einige var\_\* defaults machen keinen Sinn als globale Defaults:
|
||||||
|
|
||||||
- `var_ctid` - Container-IDs können nur 1x vergeben werden ❌
|
- `var_ctid` - Container-IDs können nur 1x vergeben werden ❌
|
||||||
- `var_ipv6_static` - Statische IPs können nur 1x vergeben werden ❌
|
- `var_ipv6_static` - Statische IPs können nur 1x vergeben werden ❌
|
||||||
|
|
||||||
**Kein Problem (KORRIGIERT):**
|
**Kein Problem (KORRIGIERT):**
|
||||||
|
|
||||||
- `var_gateway` - Kann als Default gesetzt werden (User's Verantwortung) ✅
|
- `var_gateway` - Kann als Default gesetzt werden (User's Verantwortung) ✅
|
||||||
- `var_apt_cacher` - Kann als Default gesetzt werden + Runtime-Check ✅
|
- `var_apt_cacher` - Kann als Default gesetzt werden + Runtime-Check ✅
|
||||||
- `var_apt_cacher_ip` - Kann als Default gesetzt werden + Runtime-Check ✅
|
- `var_apt_cacher_ip` - Kann als Default gesetzt werden + Runtime-Check ✅
|
||||||
|
|
||||||
**Lösung:**
|
**Lösung:**
|
||||||
|
|
||||||
- ✅ **ENTFERNT** aus VAR_WHITELIST: var_ctid, var_ipv6_static
|
- ✅ **ENTFERNT** aus VAR_WHITELIST: var_ctid, var_ipv6_static
|
||||||
- ✅ **BEHALTEN** in VAR_WHITELIST: var_gateway, var_apt_cacher, var_apt_cacher_ip
|
- ✅ **BEHALTEN** in VAR_WHITELIST: var_gateway, var_apt_cacher, var_apt_cacher_ip
|
||||||
- ✅ **NEU:** Runtime-Check für APT Cacher Erreichbarkeit (curl timeout 2s)
|
- ✅ **NEU:** Runtime-Check für APT Cacher Erreichbarkeit (curl timeout 2s)
|
||||||
- ✅ Kommentare hinzugefügt zur Erklärung
|
- ✅ Kommentare hinzugefügt zur Erklärung
|
||||||
|
|
||||||
**APT Cacher Runtime Check:**
|
**APT Cacher Runtime Check:**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Runtime check: Verify APT cacher is reachable if configured
|
# Runtime check: Verify APT cacher is reachable if configured
|
||||||
if [[ -n "$APT_CACHER_IP" && "$APT_CACHER" == "yes" ]]; then
|
if [[ -n "$APT_CACHER_IP" && "$APT_CACHER" == "yes" ]]; then
|
||||||
@ -78,6 +86,7 @@ fi
|
|||||||
```
|
```
|
||||||
|
|
||||||
**Resultat:**
|
**Resultat:**
|
||||||
|
|
||||||
- Nur sinnvolle Defaults: keine var_ctid, keine static IPs
|
- Nur sinnvolle Defaults: keine var_ctid, keine static IPs
|
||||||
- APT Cacher funktioniert mit automatischem Fallback wenn nicht erreichbar
|
- APT Cacher funktioniert mit automatischem Fallback wenn nicht erreichbar
|
||||||
- Gateway bleibt als Default (User's Verantwortung bei Konflikten)
|
- Gateway bleibt als Default (User's Verantwortung bei Konflikten)
|
||||||
@ -85,12 +94,14 @@ fi
|
|||||||
## Code-Statistik
|
## Code-Statistik
|
||||||
|
|
||||||
### Vorher:
|
### Vorher:
|
||||||
|
|
||||||
- Zeilen: 3,518
|
- Zeilen: 3,518
|
||||||
- check_nvidia_host_setup(): 22 Zeilen
|
- check_nvidia_host_setup(): 22 Zeilen
|
||||||
- NVIDIA verification: 8 Zeilen
|
- NVIDIA verification: 8 Zeilen
|
||||||
- Var whitelist entries: 28 Einträge
|
- Var whitelist entries: 28 Einträge
|
||||||
|
|
||||||
### Nachher:
|
### Nachher:
|
||||||
|
|
||||||
- Zeilen: 3,458
|
- Zeilen: 3,458
|
||||||
- check_nvidia_host_setup(): **ENTFERNT**
|
- check_nvidia_host_setup(): **ENTFERNT**
|
||||||
- NVIDIA verification: **ENTFERNT**
|
- NVIDIA verification: **ENTFERNT**
|
||||||
@ -99,22 +110,26 @@ fi
|
|||||||
- Var whitelist entries: 26 Einträge (var_ctid, var_ipv6_static entfernt)
|
- Var whitelist entries: 26 Einträge (var_ctid, var_ipv6_static entfernt)
|
||||||
|
|
||||||
### Einsparung:
|
### Einsparung:
|
||||||
|
|
||||||
- ~60 Zeilen Code
|
- ~60 Zeilen Code
|
||||||
- 2 problematische var_* Einträge entfernt
|
- 2 problematische var\_\* Einträge entfernt
|
||||||
- Komplexität reduziert
|
- Komplexität reduziert
|
||||||
- Robustheit erhöht (APT Cacher Check)
|
- Robustheit erhöht (APT Cacher Check)
|
||||||
|
|
||||||
## Was wurde KORRIGIERT
|
## Was wurde KORRIGIERT
|
||||||
|
|
||||||
### Fehler 1: lxc.mount.entry entfernt ❌
|
### Fehler 1: lxc.mount.entry entfernt ❌
|
||||||
|
|
||||||
**Problem:** Ich hatte die `lxc.mount.entry` Zeilen entfernt und nur `dev0:` Einträge behalten.
|
**Problem:** Ich hatte die `lxc.mount.entry` Zeilen entfernt und nur `dev0:` Einträge behalten.
|
||||||
**Lösung:** `lxc.mount.entry` für alle GPU-Typen wieder hinzugefügt! ✅
|
**Lösung:** `lxc.mount.entry` für alle GPU-Typen wieder hinzugefügt! ✅
|
||||||
|
|
||||||
### Fehler 2: Zu viel aus Whitelist entfernt ❌
|
### Fehler 2: Zu viel aus Whitelist entfernt ❌
|
||||||
|
|
||||||
**Problem:** gateway und apt_cacher sollten bleiben können.
|
**Problem:** gateway und apt_cacher sollten bleiben können.
|
||||||
**Lösung:** Nur var_ctid und var_ipv6_static entfernt! ✅
|
**Lösung:** Nur var_ctid und var_ipv6_static entfernt! ✅
|
||||||
|
|
||||||
### Fehler 3: Kein APT Cacher Fallback ❌
|
### Fehler 3: Kein APT Cacher Fallback ❌
|
||||||
|
|
||||||
**Problem:** APT Cacher könnte nicht erreichbar sein.
|
**Problem:** APT Cacher könnte nicht erreichbar sein.
|
||||||
**Lösung:** Runtime-Check mit curl --connect-timeout 2 hinzugefügt! ✅
|
**Lösung:** Runtime-Check mit curl --connect-timeout 2 hinzugefügt! ✅
|
||||||
|
|
||||||
@ -123,20 +138,23 @@ fi
|
|||||||
Vor Deployment testen:
|
Vor Deployment testen:
|
||||||
|
|
||||||
### GPU Passthrough:
|
### GPU Passthrough:
|
||||||
- [ ] Intel iGPU: Check lxc.mount.entry für /dev/dri/*
|
|
||||||
- [ ] AMD GPU: Check lxc.mount.entry für /dev/dri/*
|
- [ ] Intel iGPU: Check lxc.mount.entry für /dev/dri/\*
|
||||||
- [ ] NVIDIA GPU: Check lxc.mount.entry für /dev/nvidia*
|
- [ ] AMD GPU: Check lxc.mount.entry für /dev/dri/\*
|
||||||
|
- [ ] NVIDIA GPU: Check lxc.mount.entry für /dev/nvidia\*
|
||||||
- [ ] Privileged: Check lxc.cgroup2.devices.allow
|
- [ ] Privileged: Check lxc.cgroup2.devices.allow
|
||||||
- [ ] Unprivileged: Check nur lxc.mount.entry (keine cgroup)
|
- [ ] Unprivileged: Check nur lxc.mount.entry (keine cgroup)
|
||||||
- [ ] Multi-GPU System (user selection)
|
- [ ] Multi-GPU System (user selection)
|
||||||
- [ ] System ohne GPU (skip passthrough)
|
- [ ] System ohne GPU (skip passthrough)
|
||||||
|
|
||||||
### APT Cacher:
|
### APT Cacher:
|
||||||
|
|
||||||
- [ ] APT Cacher erreichbar → verwendet
|
- [ ] APT Cacher erreichbar → verwendet
|
||||||
- [ ] APT Cacher nicht erreichbar → deaktiviert mit Warning
|
- [ ] APT Cacher nicht erreichbar → deaktiviert mit Warning
|
||||||
- [ ] APT Cacher nicht konfiguriert → skip
|
- [ ] APT Cacher nicht konfiguriert → skip
|
||||||
|
|
||||||
### Default Vars:
|
### Default Vars:
|
||||||
|
|
||||||
- [ ] var_ctid NICHT in defaults
|
- [ ] var_ctid NICHT in defaults
|
||||||
- [ ] var_ipv6_static NICHT in defaults
|
- [ ] var_ipv6_static NICHT in defaults
|
||||||
- [ ] var_gateway in defaults ✅
|
- [ ] var_gateway in defaults ✅
|
||||||
@ -147,11 +165,13 @@ Vor Deployment testen:
|
|||||||
**KEINE Breaking Changes mehr!**
|
**KEINE Breaking Changes mehr!**
|
||||||
|
|
||||||
### GPU Passthrough:
|
### GPU Passthrough:
|
||||||
|
|
||||||
- ✅ lxc.mount.entry bleibt wie gehabt
|
- ✅ lxc.mount.entry bleibt wie gehabt
|
||||||
- ✅ Nur nvidia-smi Checks entfernt
|
- ✅ Nur nvidia-smi Checks entfernt
|
||||||
- ✅ User installiert Treiber selbst (war schon immer so)
|
- ✅ User installiert Treiber selbst (war schon immer so)
|
||||||
|
|
||||||
### Default Vars:
|
### Default Vars:
|
||||||
|
|
||||||
- ✅ gateway bleibt verfügbar
|
- ✅ gateway bleibt verfügbar
|
||||||
- ✅ apt_cacher bleibt verfügbar (+ neuer Check)
|
- ✅ apt_cacher bleibt verfügbar (+ neuer Check)
|
||||||
- ❌ var_ctid entfernt (macht keinen Sinn)
|
- ❌ var_ctid entfernt (macht keinen Sinn)
|
||||||
@ -160,12 +180,14 @@ Vor Deployment testen:
|
|||||||
## Vorteile
|
## Vorteile
|
||||||
|
|
||||||
### GPU Passthrough:
|
### GPU Passthrough:
|
||||||
|
|
||||||
- ✅ Einfacher Code, weniger Fehlerquellen
|
- ✅ Einfacher Code, weniger Fehlerquellen
|
||||||
- ✅ Keine Host-Dependencies (nvidia-smi)
|
- ✅ Keine Host-Dependencies (nvidia-smi)
|
||||||
- ✅ lxc.mount.entry funktioniert wie erwartet ✅
|
- ✅ lxc.mount.entry funktioniert wie erwartet ✅
|
||||||
- ✅ User hat Kontrolle über Container-Treiber
|
- ✅ User hat Kontrolle über Container-Treiber
|
||||||
|
|
||||||
### Default Vars:
|
### Default Vars:
|
||||||
|
|
||||||
- ✅ APT Cacher mit automatischem Fallback
|
- ✅ APT Cacher mit automatischem Fallback
|
||||||
- ✅ Gateway als Default möglich (User's Verantwortung)
|
- ✅ Gateway als Default möglich (User's Verantwortung)
|
||||||
- ✅ Verhindert CT-ID und static IP Konflikte
|
- ✅ Verhindert CT-ID und static IP Konflikte
|
||||||
@ -176,6 +198,7 @@ Vor Deployment testen:
|
|||||||
### GPU Device Binding (KORRIGIERT):
|
### GPU Device Binding (KORRIGIERT):
|
||||||
|
|
||||||
**Intel/AMD:**
|
**Intel/AMD:**
|
||||||
|
|
||||||
```lxc
|
```lxc
|
||||||
lxc.mount.entry: /dev/dri/renderD128 /dev/dri/renderD128 none bind,optional,create=file
|
lxc.mount.entry: /dev/dri/renderD128 /dev/dri/renderD128 none bind,optional,create=file
|
||||||
lxc.mount.entry: /dev/dri/card0 /dev/dri/card0 none bind,optional,create=file
|
lxc.mount.entry: /dev/dri/card0 /dev/dri/card0 none bind,optional,create=file
|
||||||
@ -185,6 +208,7 @@ lxc.cgroup2.devices.allow: c 226:0 rwm
|
|||||||
```
|
```
|
||||||
|
|
||||||
**NVIDIA:**
|
**NVIDIA:**
|
||||||
|
|
||||||
```lxc
|
```lxc
|
||||||
lxc.mount.entry: /dev/nvidia0 /dev/nvidia0 none bind,optional,create=file
|
lxc.mount.entry: /dev/nvidia0 /dev/nvidia0 none bind,optional,create=file
|
||||||
lxc.mount.entry: /dev/nvidiactl /dev/nvidiactl none bind,optional,create=file
|
lxc.mount.entry: /dev/nvidiactl /dev/nvidiactl none bind,optional,create=file
|
||||||
@ -198,10 +222,12 @@ lxc.cgroup2.devices.allow: c 195:255 rwm
|
|||||||
### Whitelist Diff (KORRIGIERT):
|
### Whitelist Diff (KORRIGIERT):
|
||||||
|
|
||||||
**Entfernt:**
|
**Entfernt:**
|
||||||
|
|
||||||
- var_ctid (macht keinen Sinn - CT IDs sind unique)
|
- var_ctid (macht keinen Sinn - CT IDs sind unique)
|
||||||
- var_ipv6_static (macht keinen Sinn - static IPs sind unique)
|
- var_ipv6_static (macht keinen Sinn - static IPs sind unique)
|
||||||
|
|
||||||
**Behalten:**
|
**Behalten:**
|
||||||
|
|
||||||
- var_gateway (User's Verantwortung)
|
- var_gateway (User's Verantwortung)
|
||||||
- var_apt_cacher (mit Runtime-Check)
|
- var_apt_cacher (mit Runtime-Check)
|
||||||
- var_apt_cacher_ip (mit Runtime-Check)
|
- var_apt_cacher_ip (mit Runtime-Check)
|
||||||
|
|||||||
@ -307,7 +307,7 @@ base_settings() {
|
|||||||
GATE=${var_gateway:-""}
|
GATE=${var_gateway:-""}
|
||||||
APT_CACHER=${var_apt_cacher:-""}
|
APT_CACHER=${var_apt_cacher:-""}
|
||||||
APT_CACHER_IP=${var_apt_cacher_ip:-""}
|
APT_CACHER_IP=${var_apt_cacher_ip:-""}
|
||||||
|
|
||||||
# Runtime check: Verify APT cacher is reachable if configured
|
# Runtime check: Verify APT cacher is reachable if configured
|
||||||
if [[ -n "$APT_CACHER_IP" && "$APT_CACHER" == "yes" ]]; then
|
if [[ -n "$APT_CACHER_IP" && "$APT_CACHER" == "yes" ]]; then
|
||||||
if ! curl -s --connect-timeout 2 "http://${APT_CACHER_IP}:3142" >/dev/null 2>&1; then
|
if ! curl -s --connect-timeout 2 "http://${APT_CACHER_IP}:3142" >/dev/null 2>&1; then
|
||||||
@ -319,7 +319,7 @@ base_settings() {
|
|||||||
msg_ok "APT Cacher verified at ${APT_CACHER_IP}:3142"
|
msg_ok "APT Cacher verified at ${APT_CACHER_IP}:3142"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
MTU=${var_mtu:-""}
|
MTU=${var_mtu:-""}
|
||||||
SD=${var_storage:-""}
|
SD=${var_storage:-""}
|
||||||
NS=${var_ns:-""}
|
NS=${var_ns:-""}
|
||||||
@ -2197,7 +2197,7 @@ build_container() {
|
|||||||
# Check for NVIDIA GPU - look for NVIDIA vendor ID [10de]
|
# Check for NVIDIA GPU - look for NVIDIA vendor ID [10de]
|
||||||
if echo "$pci_vga_info" | grep -q "\[10de:"; then
|
if echo "$pci_vga_info" | grep -q "\[10de:"; then
|
||||||
msg_info "Detected NVIDIA GPU"
|
msg_info "Detected NVIDIA GPU"
|
||||||
|
|
||||||
# Simple passthrough - just bind /dev/nvidia* devices if they exist
|
# Simple passthrough - just bind /dev/nvidia* devices if they exist
|
||||||
for d in /dev/nvidia* /dev/nvidiactl /dev/nvidia-modeset /dev/nvidia-uvm /dev/nvidia-uvm-tools; do
|
for d in /dev/nvidia* /dev/nvidiactl /dev/nvidia-modeset /dev/nvidia-uvm /dev/nvidia-uvm-tools; do
|
||||||
[[ -e "$d" ]] && NVIDIA_DEVICES+=("$d")
|
[[ -e "$d" ]] && NVIDIA_DEVICES+=("$d")
|
||||||
@ -2311,7 +2311,7 @@ EOF
|
|||||||
# Add lxc.mount.entry for each device
|
# Add lxc.mount.entry for each device
|
||||||
for dev in "${devices[@]}"; do
|
for dev in "${devices[@]}"; do
|
||||||
echo "lxc.mount.entry: $dev $dev none bind,optional,create=file" >>"$LXC_CONFIG"
|
echo "lxc.mount.entry: $dev $dev none bind,optional,create=file" >>"$LXC_CONFIG"
|
||||||
|
|
||||||
if [[ "$CT_TYPE" == "0" ]]; then
|
if [[ "$CT_TYPE" == "0" ]]; then
|
||||||
# Privileged container - also add cgroup allows
|
# Privileged container - also add cgroup allows
|
||||||
local major minor
|
local major minor
|
||||||
@ -2337,7 +2337,7 @@ EOF
|
|||||||
# Add lxc.mount.entry for each NVIDIA device
|
# Add lxc.mount.entry for each NVIDIA device
|
||||||
for dev in "${NVIDIA_DEVICES[@]}"; do
|
for dev in "${NVIDIA_DEVICES[@]}"; do
|
||||||
echo "lxc.mount.entry: $dev $dev none bind,optional,create=file" >>"$LXC_CONFIG"
|
echo "lxc.mount.entry: $dev $dev none bind,optional,create=file" >>"$LXC_CONFIG"
|
||||||
|
|
||||||
if [[ "$CT_TYPE" == "0" ]]; then
|
if [[ "$CT_TYPE" == "0" ]]; then
|
||||||
# Privileged container - also add cgroup allows
|
# Privileged container - also add cgroup allows
|
||||||
local major minor
|
local major minor
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user