Add marathon mesos framework

This commit is contained in:
rushmorem 2015-02-19 11:32:02 +02:00
parent b34d63e722
commit 74b40e9a43
6 changed files with 93 additions and 0 deletions

View file

@ -159,6 +159,7 @@
roelof = "Roelof Wobben <rwobben@hotmail.com>";
romildo = "José Romildo Malaquias <malaquias@gmail.com>";
rszibele = "Richard Szibele <richard_szibele@hotmail.com>";
rushmorem = "Rushmore Mushambi <rushmore@webenchanter.com>";
rycee = "Robert Helgesson <robert@rycee.net>";
sander = "Sander van der Burg <s.vanderburg@tudelft.nl>";
schristo = "Scott Christopher <schristopher@konputa.com>";

View file

@ -178,6 +178,7 @@
nylon = 168;
apache-kafka = 169;
panamax = 170;
marathon = 171;
# When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399!

View file

@ -315,6 +315,7 @@
./services/scheduling/chronos.nix
./services/scheduling/cron.nix
./services/scheduling/fcron.nix
./services/scheduling/marathon.nix
./services/search/elasticsearch.nix
./services/search/solr.nix
./services/security/clamav.nix

View file

@ -0,0 +1,58 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.marathon;
in {
###### interface
options.services.marathon = {
enable = mkOption {
description = "Whether to enable the marathon mesos framework.";
default = false;
type = types.uniq types.bool;
};
httpPort = mkOption {
description = "Marathon listening port";
default = 8080;
type = types.int;
};
master = mkOption {
description = "Marathon mesos master zookeeper address";
default = "zk://${head cfg.zookeeperHosts}/mesos";
type = types.str;
};
zookeeperHosts = mkOption {
description = "Marathon mesos zookepper addresses";
default = [ "localhost:2181" ];
type = types.listOf types.str;
};
};
###### implementation
config = mkIf cfg.enable {
systemd.services.marathon = {
description = "Marathon Service";
wantedBy = [ "multi-user.target" ];
after = [ "network-interfaces.target" "zookeeper.service" "mesos-master.service" "mesos-slave.service" ];
serviceConfig = {
ExecStart = "${pkgs.marathon}/bin/marathon --master ${cfg.master} --zk zk://${head cfg.zookeeperHosts}/marathon";
User = "marathon";
};
};
users.extraUsers.marathon = {
uid = config.ids.uids.marathon;
description = "Marathon mesos framework user";
};
};
}

View file

@ -0,0 +1,30 @@
{ stdenv, makeWrapper, jdk, mesos, fetchurl }:
stdenv.mkDerivation rec {
name = "marathon-v${version}";
version = "0.8.0";
src = fetchurl {
url = "https://downloads.mesosphere.com/marathon/v${version}/marathon-${version}.tgz";
sha256 = "794c915e205aebd8273f2b40c6faea1517fc683cdc0169194c4a67ce8779fa41";
};
buildInputs = [ makeWrapper jdk mesos ];
installPhase = ''
mkdir -p $out/{bin,libexec/marathon}
cp target/scala-*/marathon*.jar $out/libexec/marathon/${name}.jar
makeWrapper ${jdk.jre}/bin/java $out/bin/marathon \
--add-flags "-Xmx512m -jar $out/libexec/marathon/${name}.jar" \
--prefix "MESOS_NATIVE_LIBRARY" : "$MESOS_NATIVE_LIBRARY"
'';
meta = with stdenv.lib; {
homepage = https://mesosphere.github.io/marathon;
description = "Cluster-wide init and control system for services in cgroups or Docker containers.";
license = licenses.asl20;
maintainers = with maintainers; [ rushmorem ];
platforms = platforms.linux;
};
}

View file

@ -10013,6 +10013,8 @@ let
magit = callPackage ../applications/editors/emacs-modes/magit { };
marathon = callPackage ../applications/networking/cluster/marathon { };
maudeMode = callPackage ../applications/editors/emacs-modes/maude { };
metaweblog = callPackage ../applications/editors/emacs-modes/metaweblog { };