nixos/minio: allow multiple data directories for erasure coding

This commit is contained in:
Indiscipline 2021-04-10 14:42:47 +03:00
parent c32ba28e67
commit 9ffc4ad790
2 changed files with 11 additions and 6 deletions

View file

@ -658,6 +658,12 @@ environment.systemPackages = [
Environment variables can be set using <option>environment.variables</option>.
</para>
</listitem>
<listitem>
<para>
<option>services.minio.dataDir</option> changed type to a list of paths, required for specifiyng multiple data directories for using with erasure coding.
Currently, the service doesn't enforce nor checks the correct number of paths to correspond to minio requirements.
</para>
</listitem>
</itemizedlist>
</section>

View file

@ -18,9 +18,9 @@ in
};
dataDir = mkOption {
default = "/var/lib/minio/data";
type = types.path;
description = "The data directory, for storing the objects.";
default = [ "/var/lib/minio/data" ];
type = types.listOf types.path;
description = "The list of data directories for storing the objects. Use one path for regular operation and the minimum of 4 endpoints for Erasure Code mode.";
};
configDir = mkOption {
@ -74,15 +74,14 @@ in
config = mkIf cfg.enable {
systemd.tmpfiles.rules = [
"d '${cfg.configDir}' - minio minio - -"
"d '${cfg.dataDir}' - minio minio - -"
];
] ++ (map (x: "d '" + x + "' - minio minio - - ") cfg.dataDir);
systemd.services.minio = {
description = "Minio Object Storage";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
ExecStart = "${cfg.package}/bin/minio server --json --address ${cfg.listenAddress} --config-dir=${cfg.configDir} ${cfg.dataDir}";
ExecStart = "${cfg.package}/bin/minio server --json --address ${cfg.listenAddress} --config-dir=${cfg.configDir} ${toString cfg.dataDir}";
Type = "simple";
User = "minio";
Group = "minio";