More robust seaweedfs config.

This commit is contained in:
2023-07-06 07:34:58 +01:00
parent 97f8227391
commit b8bae61281
2 changed files with 23 additions and 17 deletions

View File

@@ -1,23 +1,29 @@
{ pkgs, config, ... }:
{ pkgs, config, lib, ... }:
with builtins;
let
masters = [ "192.168.1.71:9333" "192.168.1.72:9333" "192.168.1.73:9333" ];
master_enabled = true; #builtins.elem config.networking.hostName masters;
masters = {
c1 = "192.168.1.71:9333";
c2 = "192.168.1.72:9333";
c3 = "192.168.1.73:9333";
};
master_enabled = masters ? ${config.networking.hostName};
in
{
imports = [ ./seaweedfs_lib.nix ];
services.seaweedfs.master = {
enable = master_enabled;
peers = masters;
peers = attrValues masters;
extraConfig.ip = head (split ":" masters.${config.networking.hostName});
};
services.seaweedfs.filer = {
enable = true;
master = masters;
master = attrValues masters;
};
services.seaweedfs.volumes = {
default = {
enable = true;
mserver = masters;
mserver = attrValues masters;
dir = [ "/persist/weed/volume-default" ];
};
};
@@ -31,15 +37,11 @@ in
networking.firewall.allowedTCPPorts = [
config.services.seaweedfs.volumes.default.port
9333
19333
config.services.seaweedfs.filer.port
8888
18888
# ] ++ (if master_enabled then [
] ++ (if master_enabled then [
config.services.seaweedfs.master.port
9333
19333
# ] else [ ])
];
] else [ ]);
}

View File

@@ -25,7 +25,7 @@ let
}");
mkWeedExec = subcmd: options:
(toString ([ "${seaweedfs}/bin/weed" subcmd ] ++ mkCmdLineArguments
(toString ([ "${seaweedfs}/bin/weed" "-logtostderr" subcmd ] ++ mkCmdLineArguments
((removeAttrs options [ "enable" "extraConfig" ])
// (if options ? "extraConfig" then
(removeAttrs options.extraConfig (builtins.attrNames options))
@@ -59,7 +59,7 @@ let
mkVolumeService = id: options:
nameValuePair "seaweedfs-volume-${id}" {
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ]
after = [ "network-online.target" ]
++ optional cfg.master.enable "seaweedfs-master.service";
description = "SeaweedFS volume - ${id}";
unitConfig.ConditionPathIsDirectory = options.dir;
@@ -68,6 +68,7 @@ let
Group = group;
ExecStart = mkWeedExec "volume" options;
KillSignal = "SIGTERM";
Restart = "on-failure";
};
};
@@ -139,7 +140,7 @@ in {
systemd.services = (mapAttrs' mkVolumeService enabledVolumes) // {
seaweedfs-master = mkIf cfg.master.enable {
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
after = [ "network-online.target" ];
description = "SeaweedFS master";
serviceConfig = rec {
User = user;
@@ -148,12 +149,13 @@ in {
ExecStart = (mkWeedExec "master" cfg.master)
+ " -mdir=/var/lib/${StateDirectory}";
KillSignal = "SIGTERM";
Restart = "on-failure";
};
};
seaweedfs-filer = mkIf cfg.filer.enable {
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ]
after = [ "network-online.target" ]
++ optional cfg.master.enable "seaweedfs-master.service";
description = "SeaweedFS filer";
serviceConfig = rec {
@@ -163,12 +165,13 @@ in {
StateDirectory = "seaweedfs/filer";
ExecStart = mkWeedExec "filer" cfg.filer;
KillSignal = "SIGTERM";
Restart = "on-failure";
};
};
seaweedfs-webdav = mkIf cfg.webdav.enable {
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ]
after = [ "network-online.target" ]
++ optional cfg.filer.enable "seaweedfs-filer.service";
description = "SeaweedFS webdav";
serviceConfig = {
@@ -176,6 +179,7 @@ in {
Group = group;
ExecStart = mkWeedExec "webdav" cfg.webdav;
KillSignal = "SIGTERM";
Restart = "on-failure";
};
};
};