forked from mirrors/nixpkgs
19759cfeab
This service is only limited in configuration options. But it is sufficient to run glusterd and configure it using the gluster command
85 lines
1.9 KiB
Nix
85 lines
1.9 KiB
Nix
{ 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" ];
|
|
|
|
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";
|
|
};
|
|
};
|
|
|
|
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";
|
|
};
|
|
};
|
|
};
|
|
}
|