summary refs log tree commit diff
diff options
context:
space:
mode:
authorJaka Hudoklin <jakahudoklin@gmail.com>2014-03-10 11:10:32 +0100
committerBjørn Forsman <bjorn.forsman@gmail.com>2014-03-29 10:56:07 +0100
commit227997d8cab68c3305da72cd48e425da36233936 (patch)
treed13ba20a7a2686215fbfa8401d82b58b804f6a5c
parentc23464672ec9be77b03abb8a4dec72324dcfee22 (diff)
downloadnixlib-227997d8cab68c3305da72cd48e425da36233936.tar
nixlib-227997d8cab68c3305da72cd48e425da36233936.tar.gz
nixlib-227997d8cab68c3305da72cd48e425da36233936.tar.bz2
nixlib-227997d8cab68c3305da72cd48e425da36233936.tar.lz
nixlib-227997d8cab68c3305da72cd48e425da36233936.tar.xz
nixlib-227997d8cab68c3305da72cd48e425da36233936.tar.zst
nixlib-227997d8cab68c3305da72cd48e425da36233936.zip
nixos/rabbitmq: rewrite
- rewrite from old jobs options to new services
- add simple test
- add dataDir option
-rw-r--r--nixos/modules/services/amqp/rabbitmq.nix69
-rw-r--r--nixos/tests/default.nix1
-rw-r--r--nixos/tests/rabbitmq.nix18
3 files changed, 51 insertions, 37 deletions
diff --git a/nixos/modules/services/amqp/rabbitmq.nix b/nixos/modules/services/amqp/rabbitmq.nix
index 696b5ad43797..dc1a68aefbbf 100644
--- a/nixos/modules/services/amqp/rabbitmq.nix
+++ b/nixos/modules/services/amqp/rabbitmq.nix
@@ -3,20 +3,11 @@
 with pkgs.lib;
 
 let
-
   cfg = config.services.rabbitmq;
 
-  run = cmd: "${pkgs.sudo}/bin/sudo -E -u rabbitmq ${cmd}";
-
-in
-
-{
-
-
+in {
   ###### interface
-
   options = {
-
     services.rabbitmq = {
 
       enable = mkOption {
@@ -40,55 +31,59 @@ in
         '';
       };
 
-    };
 
+      dataDir = mkOption {
+        type = types.path;
+        default = "/var/lib/rabbitmq";
+        description = ''
+          Data directory for rabbitmq.
+        '';
+      };
+
+    };
   };
 
 
   ###### implementation
-
   config = mkIf cfg.enable {
 
     environment.systemPackages = [ pkgs.rabbitmq_server ];
 
     users.extraUsers.rabbitmq = {
       description = "RabbitMQ server user";
-      home = "/var/empty";
+      home = "${cfg.dataDir}";
       group = "rabbitmq";
       uid = config.ids.uids.rabbitmq;
     };
 
     users.extraGroups.rabbitmq.gid = config.ids.gids.rabbitmq;
 
-    jobs.rabbitmq = {
-        description = "RabbitMQ server";
-
-        startOn = "started network-interfaces";
+    systemd.services.rabbitmq = {
+      description = "RabbitMQ Server";
 
-        preStart =
-          ''
-            mkdir -m 0700 -p /var/lib/rabbitmq
-            chown rabbitmq /var/lib/rabbitmq
+      wantedBy = [ "multi-user.target" ];
+      after = [ "network-interfaces.target" ];
 
-            mkdir -m 0700 -p /var/log/rabbitmq
-            chown rabbitmq /var/log/rabbitmq
-          '';
-
-        environment.HOME = "/var/lib/rabbitmq";
-        environment.RABBITMQ_NODE_IP_ADDRESS = cfg.listenAddress;
-        environment.SYS_PREFIX = "";
-
-        exec =
-          ''
-            ${run "${pkgs.rabbitmq_server}/sbin/rabbitmq-server"}
-          '';
+      environment = {
+        RABBITMQ_MNESIA_BASE = "${cfg.dataDir}/mnesia";
+        RABBITMQ_NODE_IP_ADDRESS = cfg.listenAddress;
+        RABBITMQ_SERVER_START_ARGS = "-rabbit error_logger tty -rabbit sasl_error_logger false";
+        SYS_PREFIX = "";
+      };
 
-        preStop =
-          ''
-            ${run "${pkgs.rabbitmq_server}/sbin/rabbitmqctl stop"}
-          '';
+      serviceConfig = {
+        ExecStart = "${pkgs.rabbitmq_server}/sbin/rabbitmq-server";
+        User = "rabbitmq";
+        Group = "rabbitmq";
+        PermissionsStartOnly = true;
       };
 
+      preStart = ''
+        mkdir -p ${cfg.dataDir} && chmod 0700 ${cfg.dataDir}
+        if [ "$(id -u)" = 0 ]; then chown rabbitmq:rabbitmq ${cfg.dataDir}; fi
+      '';
+    };
+
   };
 
 }
diff --git a/nixos/tests/default.nix b/nixos/tests/default.nix
index 5b68862a2cd1..4aeb7f55ac39 100644
--- a/nixos/tests/default.nix
+++ b/nixos/tests/default.nix
@@ -33,6 +33,7 @@ with import ../lib/testing.nix { inherit system minimal; };
   printing = makeTest (import ./printing.nix);
   proxy = makeTest (import ./proxy.nix);
   quake3 = makeTest (import ./quake3.nix);
+  rabbitmq = makeTest (import ./rabbitmq.nix);
   simple = makeTest (import ./simple.nix);
   #subversion = makeTest (import ./subversion.nix);
   tomcat = makeTest (import ./tomcat.nix);
diff --git a/nixos/tests/rabbitmq.nix b/nixos/tests/rabbitmq.nix
new file mode 100644
index 000000000000..271661f06820
--- /dev/null
+++ b/nixos/tests/rabbitmq.nix
@@ -0,0 +1,18 @@
+{ pkgs, ... }:
+
+# This test runs rabbitmq and checks if rabbitmq is up and running
+
+{
+  nodes = {
+    one = { config, pkgs, ... }: {
+      services.rabbitmq.enable = true;
+    };
+  };
+
+  testScript = ''
+    startAll;
+  
+    $one->waitForUnit("rabbitmq.service");
+    $one->waitUntilSucceeds("su -s ${pkgs.stdenv.shell} rabbitmq -c \"rabbitmqctl status\"");
+  '';
+}