34 lines
1,000 B
Nix
34 lines
1,000 B
Nix
{ cluster, config, depot, lib, ... }:
|
|
|
|
let
|
|
apiLink = cluster.config.hostLinks.${config.networking.hostName}.frangiclave-server;
|
|
clusterLink = cluster.config.hostLinks.${config.networking.hostName}.frangiclave-cluster;
|
|
in
|
|
|
|
{
|
|
services.vault = {
|
|
enable = true;
|
|
package = depot.packages.openbao;
|
|
address = apiLink.tuple;
|
|
extraConfig = /*hcl*/ ''
|
|
api_addr = "${apiLink.url}"
|
|
cluster_addr = "${clusterLink.url}"
|
|
'';
|
|
|
|
storageBackend = "raft";
|
|
storageConfig = /*hcl*/ ''
|
|
node_id = "x${builtins.hashString "sha256" "frangiclave-node-${config.networking.hostName}"}"
|
|
${
|
|
lib.pipe (cluster.config.services.frangiclave.otherNodes.server config.networking.hostName) [
|
|
(map (node: cluster.config.hostLinks.${node}.frangiclave-server))
|
|
(map (link: /*hcl*/ ''
|
|
retry_join {
|
|
leader_api_addr = "${link.url}"
|
|
}
|
|
''))
|
|
(lib.concatStringsSep "\n")
|
|
]
|
|
}
|
|
'';
|
|
};
|
|
}
|