parent
07a9a95b10
commit
505178ec2f
3 changed files with 36 additions and 0 deletions
|
@ -15,6 +15,7 @@ import { PasswdEntry, readPasswd } from "./helpers/passwd.js";
|
|||
import { logDebug } from "./helpers/logger.js";
|
||||
import assert from "node:assert";
|
||||
import { Persist } from "./persist.js";
|
||||
import { writePasswd } from "./passwd.js";
|
||||
|
||||
export class Alpine {
|
||||
dir: string;
|
||||
|
@ -172,6 +173,7 @@ export class Alpine {
|
|||
const alpine = new Alpine({ dir });
|
||||
await alpine.fstab.write();
|
||||
await alpine.persist.write();
|
||||
await writePasswd(alpine);
|
||||
return alpine;
|
||||
}
|
||||
}
|
||||
|
|
2
index.ts
2
index.ts
|
@ -15,10 +15,12 @@ import { setupDhcpcd } from "./services/dhcpcd.js";
|
|||
import { setupNtpsec } from "./services/ntpsec.js";
|
||||
import { setupGrafana } from "./services/grafana/index.js";
|
||||
import { setupLoki } from "./services/loki/index.js";
|
||||
import { generatePasswdSecretsFile } from "./passwd.js";
|
||||
|
||||
if (process.argv[2] === "generate-secrets") {
|
||||
await generateForgejoSecretsFile();
|
||||
await generateGrafanaSecretsFile();
|
||||
await generatePasswdSecretsFile();
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
|
32
passwd.ts
Normal file
32
passwd.ts
Normal file
|
@ -0,0 +1,32 @@
|
|||
import { nanoid } from "nanoid";
|
||||
import { generateSecretsFile, loadSecretsFile } from "./helpers/secrets.js";
|
||||
import { Alpine } from "./alpine.js";
|
||||
import { execFile } from "./helpers/better-api.js";
|
||||
|
||||
export interface PasswdSecrets {
|
||||
rootPassword: string;
|
||||
}
|
||||
|
||||
const loadPasswdSecretsFile = loadSecretsFile<PasswdSecrets>("passwd");
|
||||
export const generatePasswdSecretsFile = generateSecretsFile(
|
||||
"passwd",
|
||||
generatePasswdSecrets
|
||||
);
|
||||
async function generatePasswdSecrets(): Promise<PasswdSecrets> {
|
||||
console.info(
|
||||
"La contraseña por defecto de root va a estar en secrets/passwd.json"
|
||||
);
|
||||
return {
|
||||
rootPassword: nanoid(),
|
||||
};
|
||||
}
|
||||
|
||||
export async function writePasswd(alpine: Alpine) {
|
||||
const secrets = await loadPasswdSecretsFile();
|
||||
const proc = execFile("chroot", [alpine.dir, "passwd", "root"]);
|
||||
if (!proc.child.stdin) throw false;
|
||||
proc.child.stdin.write(secrets.rootPassword + "\n");
|
||||
proc.child.stdin.write(secrets.rootPassword + "\n");
|
||||
proc.child.stdin.end();
|
||||
await proc;
|
||||
}
|
Loading…
Reference in a new issue