Commit
This service is only limited in configuration options. But it is sufficient to run glusterd and configure it using the gluster command
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,84 @@ | ||
{ config, lib, pkgs, ... }: | ||
|
||
with lib; | ||
|
||
let | ||
inherit (pkgs) glusterfs; | ||
|
||
cfg = config.services.glusterfs; | ||
|
||
in | ||
|
||
{ | ||
|
||
###### interface | ||
|
||
options = { | ||
|
||
services.glusterfs = { | ||
|
||
enable = mkEnableOption "GlusterFS Daemon"; | ||
|
||
logLevel = mkOption { | ||
type = types.enum ["DEBUG" "INFO" "WARNING" "ERROR" "CRITICAL" "TRACE" "NONE"]; | ||
description = "Log level used by the GlusterFS daemon"; | ||
default = "INFO"; | ||
}; | ||
|
||
extraFlags = mkOption { | ||
type = types.listOf types.str; | ||
description = "Extra flags passed to the GlusterFS daemon"; | ||
default = []; | ||
}; | ||
}; | ||
}; | ||
|
||
###### implementation | ||
|
||
config = mkIf cfg.enable { | ||
environment.systemPackages = [ pkgs.glusterfs ]; | ||
|
||
services.rpcbind.enable = true; | ||
|
||
systemd.services.glusterd = { | ||
|
||
description = "GlusterFS, a clustered file-system server"; | ||
|
||
wantedBy = [ "multi-user.target" ]; | ||
|
||
requires = [ "rpcbind.service" ]; | ||
after = [ "rpcbind.service" "network.target" "local-fs.target" ]; | ||
before = [ "network-online.target" ]; | ||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
bachp
Author
Member
|
||
|
||
preStart = '' | ||
install -m 0755 -d /var/log/glusterfs | ||
''; | ||
|
||
serviceConfig = { | ||
Type="forking"; | ||
PIDFile="/run/glusterd.pid"; | ||
LimitNOFILE=65536; | ||
ExecStart="${glusterfs}/sbin/glusterd -p /run/glusterd.pid --log-level=${cfg.logLevel} ${toString cfg.extraFlags}"; | ||
KillMode="process"; | ||
This comment has been minimized.
Sorry, something went wrong.
nh2
Contributor
|
||
}; | ||
}; | ||
|
||
systemd.services.glustereventsd = { | ||
|
||
description = "Gluster Events Notifier"; | ||
|
||
wantedBy = [ "multi-user.target" ]; | ||
|
||
after = [ "syslog.target" "network.target" ]; | ||
|
||
serviceConfig = { | ||
Type="simple"; | ||
Environment="PYTHONPATH=${glusterfs}/usr/lib/python2.7/site-packages"; | ||
PIDFile="/run/glustereventsd.pid"; | ||
ExecStart="${glusterfs}/sbin/glustereventsd --pid-file /run/glustereventsd.pid"; | ||
ExecReload="/bin/kill -SIGUSR2 $MAINPID"; | ||
KillMode="control-group"; | ||
}; | ||
}; | ||
}; | ||
} |
@bachp Why is this in
before
? According to the systemd docs fornetwork-online.target
:and even more:
According to this, if anything it should be in
after
, shouldn't it? You need the network to be online before glusterd will work, but you don't need glusterd to be running for your network connection to work.I'm asking because this introduces a cycle in something I'm trying to configure: My task (say
setupGlusterConfig
must run beforeglusterd
but after the network is online.