pmcf
Version:
Poor mans configuration management
40 lines (33 loc) • 1.1 kB
JavaScript
import { join } from "node:path";
import { writeLines } from "../src/utils.mjs";
export async function generateMachineInfo(host, packageData) {
const etcDir = join(packageData.dir, "etc");
await writeLines(
etcDir,
"machine-info",
Object.entries({
CHASSIS: host.chassis,
DEPLOYMENT: host.deployment,
LOCATION: host.location.name,
HARDWARE_VENDOR: host.vendor,
HARDWARE_MODEL: host.modelName
}).map(([k, v]) => `${k}=${v}`)
);
await writeLines(etcDir, "machine-id", host["machine-id"]);
await writeLines(etcDir, "hostname", host.hostName);
}
export async function generateKnownHosts(hosts, dir) {
const keys = [];
for await (const host of hosts) {
try {
const [alg, key, desc] = (await host.publicKey("ed25519")).split(/\s+/);
keys.push(`${host.domainName} ${alg} ${key}`);
for await (const addr of host.networkAddresses(
na => na.networkInterface.kind !== "loopback"
)) {
keys.push(`${addr.address} ${alg} ${key}`);
}
} catch {}
}
await writeLines(dir, "known_hosts", keys);
}