Merge pull request #67684 from indiscipline/minio

nixos/minio: allow multiple data directories for erasure coding

taku0 4c87cb87 74df3bb8

Changed files
+11 -6
nixos
doc
manual
release-notes
modules
services
web-servers
+6
nixos/doc/manual/release-notes/rl-2105.xml
···
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>
+5 -6
nixos/modules/services/web-servers/minio.nix
···
};
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 {
···
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";