feat(templates): Template-Bau ohne SSH über eine Bau-Adresse

Ohne SSH zum Node kommt der Guest-Agent jetzt über eine feste
Bau-Adresse ins Template: cloud-init setzt Adresse und den
Bereitstellungsschlüssel für den Standardbenutzer, ProxDeploy meldet
sich per SSH in der VM an, installiert den Agent und entfernt danach
Schlüssel, Adresse und cloud-init-Angaben.

Dabei korrigiert: der Verbindungstest meldete „Template-Bau per API“
auch ohne Weg, den Agent einzubauen. Im Protokoll erscheinen
unveränderte JSON-Felder nicht mehr als geändert.

Refs #021

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-12 14:36:38 +02:00
co-authored by Claude Opus 5.5
parent 426d3ec95a
commit 21edff2141
14 changed files with 366 additions and 28 deletions
+16 -6
View File
@@ -101,17 +101,27 @@ describe("Strategien", () => {
const mitImport = [storage("local", ["iso", "import", "snippets"])];
const ohneImport = [storage("local", ["iso", "snippets"])];
it("PVE 9.2 mit import-Storage: Template-Bau per API, auch ohne SSH", () => {
const f = faehigkeitenAbleiten({
it("PVE 9.2 mit import-Storage ohne SSH: Image ginge per API, der Guest-Agent aber nicht – außer mit Bau-Adresse", () => {
const ohne = faehigkeitenAbleiten({
version: v("9.2.1"),
storages: mitImport,
ssh: "aus",
rechteFehlen: false,
});
expect(f.templateBau.weg).toBe("api");
expect(f.vmProvisionierung.weg).toBe("api");
expect(f.lxcProvisionierung).toMatchObject({ weg: "ssh", ueber: "gast" });
expect(f.snippets.weg).toBe("nicht_moeglich");
expect(ohne.templateBau.weg).toBe("nicht_moeglich");
expect(ohne.templateBau.grund).toMatch(/Bau-Adresse/);
const mit = faehigkeitenAbleiten({
version: v("9.2.1"),
storages: mitImport,
ssh: "aus",
rechteFehlen: false,
bauNetz: true,
});
expect(mit.templateBau).toMatchObject({ weg: "api" });
expect(mit.templateBau.grund).toMatch(/Bau-Adresse/);
expect(mit.vmProvisionierung.weg).toBe("api");
expect(mit.lxcProvisionierung).toMatchObject({ weg: "ssh", ueber: "gast" });
expect(mit.snippets.weg).toBe("nicht_moeglich");
});
it("PVE 8.3: Template-Bau nur per SSH; ohne SSH mit Begründung unmöglich", () => {