Ubuntu 22.04 bringt eine Gruppe „admin“ mit; heißt der Gast-Benutzer so, brach useradd mit Code 9 ab (gefunden im Feldtest auf pve-demo). Der Container-Test legt jetzt diese Lage nach und lief seit pnpm 12 nicht mehr (pnpm -s gibt es dort nicht). Refs #020 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
46 lines
1.7 KiB
TypeScript
46 lines
1.7 KiB
TypeScript
/**
|
||
* Rendert Profile für eine Distribution auf stdout – zum Ansehen und für die Integrationsprüfung
|
||
* in einem Container: `pnpm exec tsx scripts/profil-rendern.ts debian-13 base,docker server=zbx.local`
|
||
*/
|
||
import { adapterFuer } from "@/engine/adapter";
|
||
import { katalogLaden } from "@/engine/katalog/laden";
|
||
import { profileAufloesen } from "@/engine/profile/aufloesen";
|
||
import { profileRendern } from "@/engine/profile/rendern";
|
||
|
||
/** Gast-Benutzer; „admin“ prüft den Fall „Gruppe gibt es schon“ (Ubuntu 22.04). */
|
||
const BENUTZER = process.env["PD_BENUTZER"] ?? "florian";
|
||
|
||
const [distroId = "debian-13", auswahl = "base", ...zuweisungen] = process.argv.slice(2);
|
||
const katalog = await katalogLaden("catalog");
|
||
const distro = katalog.distributionen.find((d) => d.eintrag.id === distroId)?.eintrag;
|
||
if (!distro) throw new Error(`Unbekannte Distribution ${distroId}`);
|
||
const profile = new Map(katalog.profile.map((p) => [p.eintrag.id, p.eintrag]));
|
||
const eingaben: Record<string, Record<string, string>> = {};
|
||
for (const z of zuweisungen) {
|
||
const [name, wert] = z.split("=");
|
||
for (const p of profile.values())
|
||
if (p.variables.some((v) => v.name === name)) (eingaben[p.id] ??= {})[name!] = wert!;
|
||
}
|
||
const aufloesung = profileAufloesen(auswahl.split(","), profile, distro.family, eingaben);
|
||
if (!aufloesung.ok) {
|
||
console.error(aufloesung.fehler);
|
||
process.exit(1);
|
||
}
|
||
const adapter = adapterFuer(distro.family)!;
|
||
const { skript } = profileRendern(
|
||
aufloesung.profile,
|
||
adapter,
|
||
{
|
||
os: distro.os,
|
||
gast: { name: "testgast", benutzer: BENUTZER },
|
||
},
|
||
[
|
||
adapter.benutzerAnlegen({
|
||
name: BENUTZER,
|
||
sshSchluessel: [`ssh-ed25519 AAAAtest ${BENUTZER}@test`],
|
||
sudo: true,
|
||
}),
|
||
],
|
||
);
|
||
process.stdout.write(skript);
|