Merge pull request #22225 from bachp/glusterfs-service

glusterfs: add service

Changed files
+97 -1
nixos
modules
services
network-filesystems
tasks
+1
nixos/modules/module-list.nix
···
./services/monitoring/zabbix-server.nix
./services/network-filesystems/cachefilesd.nix
./services/network-filesystems/drbd.nix
+
./services/network-filesystems/glusterfs.nix
./services/network-filesystems/ipfs.nix
./services/network-filesystems/netatalk.nix
./services/network-filesystems/nfsd.nix
+84
nixos/modules/services/network-filesystems/glusterfs.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";
+
};
+
};
+
};
+
}
+1 -1
nixos/modules/tasks/filesystems.nix
···
environment.etc.fstab.text =
let
-
fsToSkipCheck = [ "none" "btrfs" "zfs" "tmpfs" "nfs" "vboxsf" ];
+
fsToSkipCheck = [ "none" "btrfs" "zfs" "tmpfs" "nfs" "vboxsf" "glusterfs" ];
skipCheck = fs: fs.noCheck || fs.device == "none" || builtins.elem fs.fsType fsToSkipCheck;
in ''
# This is a generated file. Do not edit!
+11
nixos/modules/tasks/filesystems/glusterfs.nix
···
+
{ config, lib, pkgs, ... }:
+
+
with lib;
+
+
{
+
config = mkIf (any (fs: fs == "glusterfs") config.boot.supportedFilesystems) {
+
+
system.fsPackages = [ pkgs.glusterfs ];
+
+
};
+
}