Installation
Aus dem Techeve-Repository
Section titled “Aus dem Techeve-Repository”Der empfohlene Weg — auf jedem Node, der den Dienst bekommen soll. Proxmox ist
Debian, das Paket kommt also aus apt wie alles andere auch:
apt update && apt install pve-optimizerIst die Paketquelle auf dem Node noch nicht eingebunden, einmalig — der Repository-Server bringt dafür ein Einrichtungsskript mit, das den Signaturschlüssel hinterlegt und die Quelle einträgt:
curl -fsSL https://repo.techeve.de/setup.sh | shDer Dienst startet nach der Installation bewusst nicht von selbst. Er schreibt in die Konfiguration laufender VMs, und womit, hängt an der Hardware des Clusters — was ohne Zutun losliefe, wäre geraten. Das Paket bringt deshalb nur die Vorlage mit:
cp /etc/pve-optimizer/config.example.yaml /etc/pve-optimizer/config.yaml$EDITOR /etc/pve-optimizer/config.yaml # dry_run: true stehen lassensystemctl enable --now pve-optimizerjournalctl -u pve-optimizer -f # was er tun würdeSieht das Protokoll gut aus, dry_run: false setzen und neu starten. Schneller
zu einer passenden Datei führt der Wizard.
Ein apt upgrade tauscht später das Binary und startet den Dienst neu, sofern
er eingerichtet ist. Die eigene config.yaml bleibt unangetastet; die Vorlage
daneben wird auf den neuen Stand gebracht.
Umstieg von einer Handinstallation
Section titled “Umstieg von einer Handinstallation”Wer den Dienst bisher von Hand eingerichtet hat, hat ihn unter
/usr/local/bin/pve-optimizer liegen und seine Unit unter
/etc/systemd/system/. Ein apt install allein reicht dort nicht — im
Gegenteil, es sieht danach nur so aus, als wäre der Dienst aktuell:
Das Paket legt das Binary nach /usr/bin und die Unit nach
/lib/systemd/system. Systemd bevorzugt aber, was unter /etc steht. Die alte
Unit bleibt also maßgeblich und zeigt weiter auf /usr/local/bin — das
Paket-Binary wird nie gestartet. Das Installationsskript startet den Dienst neu,
weil er eingeschaltet ist, und bringt damit die alte Version wieder hoch.
Ein pve-optimizer -version am eingeschalteten Dienst zeigt weiterhin den
alten Stand.
Der Umstieg braucht deshalb einmalig je Node:
systemctl stop pve-optimizerrm /etc/systemd/system/pve-optimizer.servicerm /usr/local/bin/pve-optimizerapt install pve-optimizersystemctl daemon-reloadsystemctl enable --now pve-optimizersystemctl status pve-optimizer # Version im Protokoll gegenprüfenDie eigene /etc/pve-optimizer/config.yaml bleibt dabei liegen und gilt weiter.
Zwei Dinge sind daran zu prüfen:
- Steht dort noch ein Pool in der alten Schreibweise
<node>:<pool>, bricht der Dienst beim Start mit einem Hinweis ab — der Eintrag gehört unternodes:. - Ohne einen Abschnitt
rules:bleibt es beim bisherigen Verhalten: Die IO-Begrenzung ist scharf, alle neuen Regeln sind aus.
Von Hand
Section titled “Von Hand”Ohne Repository — die Binaries hängen an jedem Release:
install -m 0755 pve-optimizer-linux-amd64 /usr/bin/pve-optimizerinstall -d -m 0750 /etc/pve-optimizerinstall -m 0644 config.example.yaml /etc/pve-optimizer/config.yamlinstall -m 0644 deploy/pve-optimizer.service /etc/systemd/system/systemctl daemon-reloadsystemctl enable --now pve-optimizerErst mit dry_run: true laufen lassen und ins Journal schauen — dort steht
dann, was der Dienst setzen würde:
journalctl -u pve-optimizer -fBestehende Gäste nachziehen
Section titled “Bestehende Gäste nachziehen”Die laufende Beobachtung greift nur bei neuen Aufgaben — an bereits vorhandenen Gästen bliebe also alles, wie es ist. Für den Rollout gibt es deshalb einen einmaligen Durchlauf über alle VMs und Container des Clusters:
pve-optimizer -config /etc/pve-optimizer/config.yaml -sweepErst mit dry_run: true laufen lassen und das Protokoll prüfen, dann scharf.
Der Durchlauf beendet sich nach getaner Arbeit; ein Gast, der sich nicht
anpassen lässt, bricht ihn nicht ab, sondern wird am Ende gemeldet.
Entwicklung
Section titled “Entwicklung”make # Übersicht aller Zielemake check # fmt, vet, lint, test, govulncheck — das, was auch die CI prüftmake build # Binary für den eigenen Rechnermake deb # Debian-Pakete für amd64 und arm64Vor jedem Push make check — die Pipeline prüft dasselbe.