Make it easy to override the marathon framework user

Currently the module hardcodes the systemd service user to "marathon".
With this change one would not need to create an extra systemd config to
override the user.

So why would one need to override the Marathon user? Some apps require
root access to run. You can't run those with Marathon unless you
override the default user to root. Marathon also provides a
`--mesos_user` command line flag which allows you to run apps using
arbitrary users. You need to run the framework as root to enable this
functionality.
This commit is contained in:
rushmorem 2015-05-25 11:31:57 +02:00
parent eb0a21a512
commit 9c7fae83ee
1 changed files with 21 additions and 12 deletions

View File

@ -19,14 +19,6 @@ in {
''; '';
}; };
httpPort = mkOption {
type = types.int;
default = 8080;
description = ''
Marathon listening port for HTTP connections.
'';
};
master = mkOption { master = mkOption {
type = types.str; type = types.str;
default = "zk://${concatStringsSep "," cfg.zookeeperHosts}/mesos"; default = "zk://${concatStringsSep "," cfg.zookeeperHosts}/mesos";
@ -45,6 +37,25 @@ in {
''; '';
}; };
user = mkOption {
type = types.str;
default = "marathon";
example = "root";
description = ''
The user that the Marathon framework will be launched as. If the user doesn't exist it will be created.
If you want to run apps that require root access or you want to launch apps using arbitrary users, that
is using the `--mesos_user` flag then you need to change this to `root`.
'';
};
httpPort = mkOption {
type = types.int;
default = 8080;
description = ''
Marathon listening port for HTTP connections.
'';
};
extraCmdLineOptions = mkOption { extraCmdLineOptions = mkOption {
type = types.listOf types.str; type = types.listOf types.str;
default = [ ]; default = [ ];
@ -76,14 +87,12 @@ in {
serviceConfig = { serviceConfig = {
ExecStart = "${pkgs.marathon}/bin/marathon --master ${cfg.master} --zk zk://${concatStringsSep "," cfg.zookeeperHosts}/marathon --http_port ${toString cfg.httpPort} ${concatStringsSep " " cfg.extraCmdLineOptions}"; ExecStart = "${pkgs.marathon}/bin/marathon --master ${cfg.master} --zk zk://${concatStringsSep "," cfg.zookeeperHosts}/marathon --http_port ${toString cfg.httpPort} ${concatStringsSep " " cfg.extraCmdLineOptions}";
User = "marathon"; User = cfg.user;
Restart = "always"; Restart = "always";
RestartSec = "2"; RestartSec = "2";
}; };
}; };
users.extraUsers.marathon = { users.extraUsers.${cfg.user} = { };
description = "Marathon mesos framework user";
};
}; };
} }