mesos-slave: docker and IP address config options

- Usage of docker containerizer is currently hardcoded, this PR makes it
  optional. Default is to enable it if docker is enabled.
- Make IP address to listen on part of service configuration.
This commit is contained in:
Ragnar Dahlén 2015-04-20 21:54:58 +01:00
parent 4c01e6d919
commit 045e93e0a6

View File

@ -12,6 +12,8 @@ let
attribsArg = optionalString (cfg.attributes != {})
"--attributes=${mkAttributes cfg.attributes}";
containerizers = [ "mesos" ] ++ (optional cfg.withDocker "docker");
in {
options.services.mesos = {
@ -22,8 +24,14 @@ in {
type = types.uniq types.bool;
};
ip = mkOption {
description = "IP address to listen on.";
default = "0.0.0.0";
type = types.string;
};
port = mkOption {
description = "Mesos Slave port";
description = "Port to listen on.";
default = 5051;
type = types.int;
};
@ -43,6 +51,12 @@ in {
type = types.bool;
};
withDocker = mkOption {
description = "Enable the docker containerizer.";
default = config.virtualisation.docker.enable;
type = types.bool;
};
workDir = mkOption {
description = "The Mesos work directory.";
default = "/var/lib/mesos/slave";
@ -92,17 +106,18 @@ in {
description = "Mesos Slave";
wantedBy = [ "multi-user.target" ];
after = [ "network-interfaces.target" ];
environment.MESOS_CONTAINERIZERS = "docker,mesos";
environment.MESOS_CONTAINERIZERS = concatStringsSep "," containerizers;
serviceConfig = {
ExecStart = ''
${pkgs.mesos}/bin/mesos-slave \
--ip=${cfg.ip} \
--port=${toString cfg.port} \
--master=${cfg.master} \
${optionalString cfg.withHadoop "--hadoop-home=${pkgs.hadoop}"} \
${attribsArg} \
--work_dir=${cfg.workDir} \
--logging_level=${cfg.logLevel} \
--docker=${pkgs.docker}/libexec/docker/docker \
${attribsArg} \
${optionalString cfg.withHadoop "--hadoop-home=${pkgs.hadoop}"} \
${optionalString cfg.withDocker "--docker=${pkgs.docker}/libexec/docker/docker"} \
${toString cfg.extraCmdLineOptions}
'';
PermissionsStartOnly = true;