modules: secrets: centralize agenix keys
If I intend on splitting the keys depending on which host needs to have access to it, I should have a singular spot to manage the keys.
This commit is contained in:
parent
68bf36c45c
commit
34a3f9a0d6
39
keys/default.nix
Normal file
39
keys/default.nix
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
# Populate agenix keys from a central location
|
||||||
|
let
|
||||||
|
inherit (builtins)
|
||||||
|
mapAttrs
|
||||||
|
readDir
|
||||||
|
readFile
|
||||||
|
stringLength
|
||||||
|
substring
|
||||||
|
;
|
||||||
|
|
||||||
|
removeSuffix = suffix: str:
|
||||||
|
let
|
||||||
|
sufLen = stringLength suffix;
|
||||||
|
sLen = stringLength str;
|
||||||
|
in
|
||||||
|
if sufLen <= sLen && suffix == substring (sLen - sufLen) sufLen str then
|
||||||
|
substring 0 (sLen - sufLen) str
|
||||||
|
else
|
||||||
|
str;
|
||||||
|
|
||||||
|
|
||||||
|
readKeys = dir:
|
||||||
|
let
|
||||||
|
files = readDir dir;
|
||||||
|
readNoNewlines = f: removeSuffix "\n" (readFile f);
|
||||||
|
readKey = name: readNoNewlines (dir + "/${name}");
|
||||||
|
in
|
||||||
|
mapAttrs (n: _: readKey n) files;
|
||||||
|
|
||||||
|
hosts = readKeys ./hosts;
|
||||||
|
users = readKeys ./users;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
inherit
|
||||||
|
hosts
|
||||||
|
users;
|
||||||
|
|
||||||
|
all = (builtins.attrValues hosts) ++ (builtins.attrValues users);
|
||||||
|
}
|
1
keys/hosts/porthos
Normal file
1
keys/hosts/porthos
Normal file
|
@ -0,0 +1 @@
|
||||||
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICGzznQ3LSmBYHx6fXthgMDiTcU5i/Nvj020SbmhzAFb root@porthos
|
1
keys/users/ambroisie
Normal file
1
keys/users/ambroisie
Normal file
|
@ -0,0 +1 @@
|
||||||
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMIVd6Oh08iUNb1vTULbxGpevnh++wxsWW9wqhaDryIq ambroisie@agenix
|
|
@ -1,16 +1,7 @@
|
||||||
let
|
let
|
||||||
# FIXME: read them from directories
|
keys = import ../../keys;
|
||||||
ambroisie = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMIVd6Oh08iUNb1vTULbxGpevnh++wxsWW9wqhaDryIq ambroisie@agenix";
|
|
||||||
users = [
|
|
||||||
ambroisie
|
|
||||||
];
|
|
||||||
|
|
||||||
porthos = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICGzznQ3LSmBYHx6fXthgMDiTcU5i/Nvj020SbmhzAFb root@porthos";
|
inherit (keys) all;
|
||||||
machines = [
|
|
||||||
porthos
|
|
||||||
];
|
|
||||||
|
|
||||||
all = users ++ machines;
|
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
"acme/dns-key.age".publicKeys = all;
|
"acme/dns-key.age".publicKeys = all;
|
||||||
|
|
Loading…
Reference in a new issue