minio service: add additional config options

Set access and secret key and disable browser.
Tests extended to do real operations against minio.

Changed files
+57 -2
nixos
modules
services
web-servers
tests
+42
nixos/modules/services/web-servers/minio.nix
···
description = "The config directory, for the access keys and other settings.";
};
+
accessKey = mkOption {
+
default = "";
+
type = types.str;
+
description = ''
+
Access key of 5 to 20 characters in length that clients use to access the server.
+
This overrides the access key that is generated by minio on first startup and stored inside the
+
<literal>configDir</literal> directory.
+
'';
+
};
+
+
secretKey = mkOption {
+
default = "";
+
type = types.str;
+
description = ''
+
Specify the Secret key of 8 to 40 characters in length that clients use to access the server.
+
This overrides the secret key that is generated by minio on first startup and stored inside the
+
<literal>configDir</literal> directory.
+
'';
+
};
+
+
region = mkOption {
+
default = "us-east-1";
+
type = types.str;
+
description = ''
+
The physical location of the server. By default it is set to us-east-1, which is same as AWS S3's and Minio's default region.
+
'';
+
};
+
+
browser = mkOption {
+
default = true;
+
type = types.bool;
+
description = "Enable or disable access to web UI.";
+
};
+
package = mkOption {
default = pkgs.minio;
defaultText = "pkgs.minio";
···
User = "minio";
Group = "minio";
LimitNOFILE = 65536;
+
};
+
environment = {
+
MINIO_REGION = "${cfg.region}";
+
MINIO_BROWSER = "${if cfg.browser then "on" else "off"}";
+
} // optionalAttrs (cfg.accessKey != "") {
+
MINIO_ACCESS_KEY = "${cfg.accessKey}";
+
} // optionalAttrs (cfg.secretKey != "") {
+
MINIO_SECRET_KEY = "${cfg.secretKey}";
};
};
+15 -2
nixos/tests/minio.nix
···
maintainers = [ bachp ];
};
-
machine = { config, pkgs, ... }: {
-
services.minio.enable = true;
+
nodes = {
+
machine = { config, pkgs, ... }: {
+
services.minio = {
+
enable = true;
+
accessKey = "BKIKJAA5BMMU2RHO6IBB";
+
secretKey = "V7f1CwQqAcwo80UEIJEjc5gVQUSSx5ohQ9GSrr12";
+
};
+
environment.systemPackages = [ pkgs.minio-client ];
+
};
};
testScript =
···
$machine->waitForUnit("minio.service");
$machine->waitForOpenPort(9000);
$machine->succeed("curl --fail http://localhost:9000/minio/index.html");
+
+
# Create a test bucket on the server
+
$machine->succeed("mc config host add minio http://localhost:9000 BKIKJAA5BMMU2RHO6IBB V7f1CwQqAcwo80UEIJEjc5gVQUSSx5ohQ9GSrr12 S3v4");
+
$machine->succeed("mc mb minio/test-bucket");
+
$machine->succeed("mc ls minio") =~ /test-bucket/ or die;
$machine->shutdown;
+
'';
})