forked from mirrors/nixpkgs
RabbitMQ service: add properties essential for clusters
This commit is contained in:
parent
a7207cf389
commit
be2cec24ed
|
@ -4,6 +4,8 @@ with lib;
|
||||||
|
|
||||||
let
|
let
|
||||||
cfg = config.services.rabbitmq;
|
cfg = config.services.rabbitmq;
|
||||||
|
config_file = pkgs.writeText "rabbitmq.config" cfg.config;
|
||||||
|
config_file_wo_suffix = builtins.substring 0 ((builtins.stringLength config_file) - 7) config_file;
|
||||||
|
|
||||||
in {
|
in {
|
||||||
###### interface
|
###### interface
|
||||||
|
@ -31,7 +33,6 @@ in {
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
dataDir = mkOption {
|
dataDir = mkOption {
|
||||||
type = types.path;
|
type = types.path;
|
||||||
default = "/var/lib/rabbitmq";
|
default = "/var/lib/rabbitmq";
|
||||||
|
@ -40,6 +41,30 @@ in {
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
cookie = mkOption {
|
||||||
|
default = "";
|
||||||
|
type = types.str;
|
||||||
|
description = ''
|
||||||
|
Erlang cookie is a string of arbitrary length which must
|
||||||
|
be the same for several nodes to be allowed to communicate.
|
||||||
|
Leave empty to generate automatically.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkOption {
|
||||||
|
default = "";
|
||||||
|
type = types.str;
|
||||||
|
description = ''
|
||||||
|
Verbatim configuration file contents.
|
||||||
|
See http://www.rabbitmq.com/configure.htm
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
plugins = mkOption {
|
||||||
|
default = [];
|
||||||
|
type = types.listOf types.str;
|
||||||
|
description = "The names of plugins to enable";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -69,7 +94,10 @@ in {
|
||||||
RABBITMQ_NODE_IP_ADDRESS = cfg.listenAddress;
|
RABBITMQ_NODE_IP_ADDRESS = cfg.listenAddress;
|
||||||
RABBITMQ_SERVER_START_ARGS = "-rabbit error_logger tty -rabbit sasl_error_logger false";
|
RABBITMQ_SERVER_START_ARGS = "-rabbit error_logger tty -rabbit sasl_error_logger false";
|
||||||
SYS_PREFIX = "";
|
SYS_PREFIX = "";
|
||||||
};
|
RABBITMQ_ENABLED_PLUGINS_FILE = pkgs.writeText "enabled_plugins" ''
|
||||||
|
[ ${concatStringsSep "," cfg.plugins} ].
|
||||||
|
'';
|
||||||
|
} // optionalAttrs (cfg.config != "") { RABBITMQ_CONFIG_FILE = config_file_wo_suffix; };
|
||||||
|
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
ExecStart = "${pkgs.rabbitmq_server}/sbin/rabbitmq-server";
|
ExecStart = "${pkgs.rabbitmq_server}/sbin/rabbitmq-server";
|
||||||
|
@ -81,6 +109,15 @@ in {
|
||||||
preStart = ''
|
preStart = ''
|
||||||
mkdir -p ${cfg.dataDir} && chmod 0700 ${cfg.dataDir}
|
mkdir -p ${cfg.dataDir} && chmod 0700 ${cfg.dataDir}
|
||||||
if [ "$(id -u)" = 0 ]; then chown rabbitmq:rabbitmq ${cfg.dataDir}; fi
|
if [ "$(id -u)" = 0 ]; then chown rabbitmq:rabbitmq ${cfg.dataDir}; fi
|
||||||
|
|
||||||
|
${optionalString (cfg.cookie != "") ''
|
||||||
|
echo -n ${cfg.cookie} > ${cfg.dataDir}/.erlang.cookie
|
||||||
|
chmod 400 ${cfg.dataDir}/.erlang.cookie
|
||||||
|
chown rabbitmq:rabbitmq ${cfg.dataDir}/.erlang.cookie
|
||||||
|
''}
|
||||||
|
|
||||||
|
mkdir -p /var/log/rabbitmq && chmod 0700 /var/log/rabbitmq
|
||||||
|
chown rabbitmq:rabbitmq /var/log/rabbitmq
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue