More robust seaweedfs config.
This commit is contained in:
@@ -1,23 +1,29 @@
|
|||||||
{ pkgs, config, ... }:
|
{ pkgs, config, lib, ... }:
|
||||||
|
with builtins;
|
||||||
let
|
let
|
||||||
masters = [ "192.168.1.71:9333" "192.168.1.72:9333" "192.168.1.73:9333" ];
|
masters = {
|
||||||
master_enabled = true; #builtins.elem config.networking.hostName 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
|
in
|
||||||
{
|
{
|
||||||
imports = [ ./seaweedfs_lib.nix ];
|
imports = [ ./seaweedfs_lib.nix ];
|
||||||
|
|
||||||
services.seaweedfs.master = {
|
services.seaweedfs.master = {
|
||||||
enable = master_enabled;
|
enable = master_enabled;
|
||||||
peers = masters;
|
peers = attrValues masters;
|
||||||
|
extraConfig.ip = head (split ":" masters.${config.networking.hostName});
|
||||||
};
|
};
|
||||||
services.seaweedfs.filer = {
|
services.seaweedfs.filer = {
|
||||||
enable = true;
|
enable = true;
|
||||||
master = masters;
|
master = attrValues masters;
|
||||||
};
|
};
|
||||||
services.seaweedfs.volumes = {
|
services.seaweedfs.volumes = {
|
||||||
default = {
|
default = {
|
||||||
enable = true;
|
enable = true;
|
||||||
mserver = masters;
|
mserver = attrValues masters;
|
||||||
dir = [ "/persist/weed/volume-default" ];
|
dir = [ "/persist/weed/volume-default" ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -31,15 +37,11 @@ in
|
|||||||
|
|
||||||
networking.firewall.allowedTCPPorts = [
|
networking.firewall.allowedTCPPorts = [
|
||||||
config.services.seaweedfs.volumes.default.port
|
config.services.seaweedfs.volumes.default.port
|
||||||
9333
|
|
||||||
19333
|
19333
|
||||||
config.services.seaweedfs.filer.port
|
config.services.seaweedfs.filer.port
|
||||||
8888
|
|
||||||
18888
|
18888
|
||||||
# ] ++ (if master_enabled then [
|
] ++ (if master_enabled then [
|
||||||
config.services.seaweedfs.master.port
|
config.services.seaweedfs.master.port
|
||||||
9333
|
|
||||||
19333
|
19333
|
||||||
# ] else [ ])
|
] else [ ]);
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ let
|
|||||||
}");
|
}");
|
||||||
|
|
||||||
mkWeedExec = subcmd: options:
|
mkWeedExec = subcmd: options:
|
||||||
(toString ([ "${seaweedfs}/bin/weed" subcmd ] ++ mkCmdLineArguments
|
(toString ([ "${seaweedfs}/bin/weed" "-logtostderr" subcmd ] ++ mkCmdLineArguments
|
||||||
((removeAttrs options [ "enable" "extraConfig" ])
|
((removeAttrs options [ "enable" "extraConfig" ])
|
||||||
// (if options ? "extraConfig" then
|
// (if options ? "extraConfig" then
|
||||||
(removeAttrs options.extraConfig (builtins.attrNames options))
|
(removeAttrs options.extraConfig (builtins.attrNames options))
|
||||||
@@ -59,7 +59,7 @@ let
|
|||||||
mkVolumeService = id: options:
|
mkVolumeService = id: options:
|
||||||
nameValuePair "seaweedfs-volume-${id}" {
|
nameValuePair "seaweedfs-volume-${id}" {
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
after = [ "network.target" ]
|
after = [ "network-online.target" ]
|
||||||
++ optional cfg.master.enable "seaweedfs-master.service";
|
++ optional cfg.master.enable "seaweedfs-master.service";
|
||||||
description = "SeaweedFS volume - ${id}";
|
description = "SeaweedFS volume - ${id}";
|
||||||
unitConfig.ConditionPathIsDirectory = options.dir;
|
unitConfig.ConditionPathIsDirectory = options.dir;
|
||||||
@@ -68,6 +68,7 @@ let
|
|||||||
Group = group;
|
Group = group;
|
||||||
ExecStart = mkWeedExec "volume" options;
|
ExecStart = mkWeedExec "volume" options;
|
||||||
KillSignal = "SIGTERM";
|
KillSignal = "SIGTERM";
|
||||||
|
Restart = "on-failure";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -139,7 +140,7 @@ in {
|
|||||||
systemd.services = (mapAttrs' mkVolumeService enabledVolumes) // {
|
systemd.services = (mapAttrs' mkVolumeService enabledVolumes) // {
|
||||||
seaweedfs-master = mkIf cfg.master.enable {
|
seaweedfs-master = mkIf cfg.master.enable {
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
after = [ "network.target" ];
|
after = [ "network-online.target" ];
|
||||||
description = "SeaweedFS master";
|
description = "SeaweedFS master";
|
||||||
serviceConfig = rec {
|
serviceConfig = rec {
|
||||||
User = user;
|
User = user;
|
||||||
@@ -148,12 +149,13 @@ in {
|
|||||||
ExecStart = (mkWeedExec "master" cfg.master)
|
ExecStart = (mkWeedExec "master" cfg.master)
|
||||||
+ " -mdir=/var/lib/${StateDirectory}";
|
+ " -mdir=/var/lib/${StateDirectory}";
|
||||||
KillSignal = "SIGTERM";
|
KillSignal = "SIGTERM";
|
||||||
|
Restart = "on-failure";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
seaweedfs-filer = mkIf cfg.filer.enable {
|
seaweedfs-filer = mkIf cfg.filer.enable {
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
after = [ "network.target" ]
|
after = [ "network-online.target" ]
|
||||||
++ optional cfg.master.enable "seaweedfs-master.service";
|
++ optional cfg.master.enable "seaweedfs-master.service";
|
||||||
description = "SeaweedFS filer";
|
description = "SeaweedFS filer";
|
||||||
serviceConfig = rec {
|
serviceConfig = rec {
|
||||||
@@ -163,12 +165,13 @@ in {
|
|||||||
StateDirectory = "seaweedfs/filer";
|
StateDirectory = "seaweedfs/filer";
|
||||||
ExecStart = mkWeedExec "filer" cfg.filer;
|
ExecStart = mkWeedExec "filer" cfg.filer;
|
||||||
KillSignal = "SIGTERM";
|
KillSignal = "SIGTERM";
|
||||||
|
Restart = "on-failure";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
seaweedfs-webdav = mkIf cfg.webdav.enable {
|
seaweedfs-webdav = mkIf cfg.webdav.enable {
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
after = [ "network.target" ]
|
after = [ "network-online.target" ]
|
||||||
++ optional cfg.filer.enable "seaweedfs-filer.service";
|
++ optional cfg.filer.enable "seaweedfs-filer.service";
|
||||||
description = "SeaweedFS webdav";
|
description = "SeaweedFS webdav";
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
@@ -176,6 +179,7 @@ in {
|
|||||||
Group = group;
|
Group = group;
|
||||||
ExecStart = mkWeedExec "webdav" cfg.webdav;
|
ExecStart = mkWeedExec "webdav" cfg.webdav;
|
||||||
KillSignal = "SIGTERM";
|
KillSignal = "SIGTERM";
|
||||||
|
Restart = "on-failure";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user