Proxmox-Hosts auf Updates scannen, anzeigen und aktualisieren (ohne Snapshot) #13
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
Proxmox-Server lassen sich unter Einstellungen → Proxmox schon hinterlegen. Dort dienen sie aber nur als Snapshot-Ziel für VMs/LXCs. Ob auf den Proxmox-Hosts selbst Updates anstehen, sieht man in PatchPilot nicht. Man muss das weiterhin in der Proxmox-Oberfläche oder per SSH prüfen und die Updates dort einspielen.
Ziel
Proxmox-Hosts werden wie normale Server behandelt:
Updates.tsx) und im Dashboard (Dashboard.tsx), mit Paketanzahl, Paketliste und Zeitpunkt des letzten Scans, genau wie bei den anderen Servern.Stand im Code
backend/database.py:ProxmoxServerenthält nur die API-Zugangsdaten (host,port8006,user,password,verify_ssl) und keine SSH-Daten.UpdateScan.server_idundUpdateRun.server_idsind Fremdschlüssel aufserver.id. Scans und Update-Läufe können sich also im Moment nur auf Einträge aus der TabelleServerbeziehen, nicht aufProxmoxServer.backend/routers/updates.py: Scan (_run_scan,_scan_upgradable_packages) und Update (_execute_update) laufen komplett über SSH. Schritt 1 in_execute_updateistproxmox_utils.create_snapshot().backend/proxmox_utils.py:create_snapshot()überspringt schon jetzt, wenncreate_snapshot/proxmox_server_id/proxmox_vmidfehlen. Das lässt sich wiederverwenden.ProxmoxServer-Eintrag steht für einen Cluster-Zugang, der mehrere Nodes haben kann (GET /api/proxmox/{id}/nodes). Updates gibt es aber pro Node.Lösungsvorschlag
Datenmodell: Jeder Proxmox-Node wird ein
Server-Eintrag mit einem neuentype = "proxmox"(bisherlxc | vm | unraid | bare),os_type = "debian",create_snapshot = Falseund einem Verweis auf denProxmoxServerund den Node (proxmox_server_id,proxmox_node). So funktionierenUpdateScan,UpdateRun, Historie, Benachrichtigungen, Dashboard und Updateliste ohne Schemaänderung an den Fremdschlüsseln. Die Alternative wäre, alle diese Stellen um einen zweiten Servertyp zu erweitern, und das wäre deutlich aufwendiger.Scannen: Zwei Wege sind möglich:
apt list --upgradable). Das ist einheitlich, braucht aber SSH-Zugangsdaten für den Node.POST /nodes/{node}/apt/updateaktualisiert die Paketlisten,GET /nodes/{node}/apt/updateliefert die verfügbaren Updates. Dafür reichen die schon hinterlegten API-Zugangsdaten.Aktualisieren: Die Proxmox-API hat keinen Endpunkt, der die Updates wirklich einspielt (
apt dist-upgrade). Für diesen Schritt ist SSH also nötig. Auf Proxmox sollte dabeiapt dist-upgrade/full-upgradelaufen, nichtapt upgrade, weil Proxmox das ausdrücklich so vorgibt.Snapshot: In
_execute_updatewird der Snapshot beitype == "proxmox"immer übersprungen, und im Log erscheint ein Hinweis wie "Proxmox-Host – kein Snapshot möglich". Im Frontend werdenSnapshotBadge, die Snapshot-Option und die Snapshot-Verwaltung für diesen Typ ausgeblendet.Offene Punkte
Server-Einträge angelegt und dort gepflegt? Das API-Passwort vonroot@pamals SSH-Passwort wiederzuverwenden wäre bequem, sollte aber höchstens als Voreinstellung dienen.GET /nodesbeim Speichern bzw. Testen des Proxmox-Eintrags, oder per Hand einzeln auswählen?/var/run/reboot-required) wäre sinnvoll. Ein automatischer Neustart gehört nicht in dieses Issue.apt updatemit 401 fehl. Diese Fehlermeldung sollte verständlich im Scan-Ergebnis stehen.Akzeptanzkriterien
dist-upgrade) und landet in der Historieproxmox