diff options
author | Nathan Bijnens <nathan@nathan.gs> | 2014-08-26 20:56:54 +0200 |
---|---|---|
committer | Jaka Hudoklin <jakahudoklin@gmail.com> | 2014-09-03 19:21:49 +0200 |
commit | 00ad13428416ef2c46d058166ee76c965609065f (patch) | |
tree | b511e8f2164733636fd9ee75a37e6cea2607f8dd /nixos/modules/services/misc/mesos-master.nix | |
parent | b48c42f37b4a9ecfdaf7775f52ba69fa069fa6b0 (diff) | |
download | nixpkgs-00ad13428416ef2c46d058166ee76c965609065f.tar nixpkgs-00ad13428416ef2c46d058166ee76c965609065f.tar.gz nixpkgs-00ad13428416ef2c46d058166ee76c965609065f.tar.bz2 nixpkgs-00ad13428416ef2c46d058166ee76c965609065f.tar.lz nixpkgs-00ad13428416ef2c46d058166ee76c965609065f.tar.xz nixpkgs-00ad13428416ef2c46d058166ee76c965609065f.tar.zst nixpkgs-00ad13428416ef2c46d058166ee76c965609065f.zip |
Mesos: services
Diffstat (limited to 'nixos/modules/services/misc/mesos-master.nix')
-rw-r--r-- | nixos/modules/services/misc/mesos-master.nix | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/nixos/modules/services/misc/mesos-master.nix b/nixos/modules/services/misc/mesos-master.nix new file mode 100644 index 00000000000..bdf88d427c5 --- /dev/null +++ b/nixos/modules/services/misc/mesos-master.nix @@ -0,0 +1,103 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.mesos.master; + +in { + + options.services.mesos = { + + master = { + enable = mkOption { + description = "Whether to enable the Mesos Master."; + default = false; + type = types.uniq types.bool; + }; + + port = mkOption { + description = "Mesos Master port"; + default = 5050; + type = types.int; + }; + + zk = mkOption { + description = '' + ZooKeeper URL (used for leader election amongst masters). + May be one of: + zk://host1:port1,host2:port2,.../mesos + zk://username:password@host1:port1,host2:port2,.../mesos + ''; + type = types.str; + }; + + workDir = mkOption { + description = "The Mesos work directory."; + default = "/var/lib/mesos/master"; + type = types.str; + }; + + extraCmdLineOptions = mkOption { + description = '' + Extra command line options for Mesos Master. + + See https://mesos.apache.org/documentation/latest/configuration/ + ''; + default = [ "" ]; + type = types.listOf types.string; + example = [ "--credentials=VALUE" ]; + }; + + quorum = mkOption { + description = '' + The size of the quorum of replicas when using 'replicated_log' based + registry. It is imperative to set this value to be a majority of + masters i.e., quorum > (number of masters)/2. + + If 0 will fall back to --registry=in_memory. + ''; + default = 0; + type = types.int; + }; + + logLevel = mkOption { + description = '' + The logging level used. Possible values: + 'INFO', 'WARNING', 'ERROR' + ''; + default = "INFO"; + type = types.str; + }; + + }; + + + }; + + + config = mkIf cfg.enable { + systemd.services.mesos-master = { + description = "Mesos Master"; + wantedBy = [ "multi-user.target" ]; + after = [ "network-interfaces.target" ]; + serviceConfig = { + ExecStart = '' + ${pkgs.mesos}/bin/mesos-master \ + --port=${toString cfg.port} \ + --zk=${cfg.zk} \ + ${if cfg.quorum == 0 then "--registry=in_memory" else "--registry=replicated_log --quorum=${cfg.quorum}"} \ + --work_dir=${cfg.workDir} \ + --logging_level=${cfg.logLevel} \ + ${toString cfg.extraCmdLineOptions} + ''; + PermissionsStartOnly = true; + }; + preStart = '' + mkdir -m 0700 -p ${cfg.workDir} + ''; + }; + }; + +} + |