Merge pull request #168292 from whentze/cockroach-module-improvements

nixos/cockroachdb: add `extraArgs` and properly escape systemd exec args
This commit is contained in:
Silvan Mosberger 2022-04-13 13:48:17 +02:00 committed by GitHub
commit 398973f7eb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1,4 +1,4 @@
{ config, lib, pkgs, ... }: { config, lib, pkgs, utils, ... }:
with lib; with lib;
@ -6,46 +6,44 @@ let
cfg = config.services.cockroachdb; cfg = config.services.cockroachdb;
crdb = cfg.package; crdb = cfg.package;
escape = builtins.replaceStrings ["%"] ["%%"]; startupCommand = utils.escapeSystemdExecArgs
ifNotNull = v: s: optionalString (v != null) s; ([
# Basic startup
startupCommand = lib.concatStringsSep " " "${crdb}/bin/cockroach"
[ # Basic startup "start"
"${crdb}/bin/cockroach start"
"--logtostderr" "--logtostderr"
"--store=/var/lib/cockroachdb" "--store=/var/lib/cockroachdb"
(ifNotNull cfg.locality "--locality='${cfg.locality}'")
# WebUI settings # WebUI settings
"--http-addr='${cfg.http.address}:${toString cfg.http.port}'" "--http-addr=${cfg.http.address}:${toString cfg.http.port}"
# Cluster listen address # Cluster listen address
"--listen-addr='${cfg.listen.address}:${toString cfg.listen.port}'" "--listen-addr=${cfg.listen.address}:${toString cfg.listen.port}"
# Cluster configuration # Cache and memory settings.
(ifNotNull cfg.join "--join=${cfg.join}") "--cache=${cfg.cache}"
"--max-sql-memory=${cfg.maxSqlMemory}"
# Cache and memory settings. Must be escaped.
"--cache='${escape cfg.cache}'"
"--max-sql-memory='${escape cfg.maxSqlMemory}'"
# Certificate/security settings. # Certificate/security settings.
(if cfg.insecure then "--insecure" else "--certs-dir=${cfg.certsDir}") (if cfg.insecure then "--insecure" else "--certs-dir=${cfg.certsDir}")
]; ]
++ lib.optional (cfg.join != null) "--join=${cfg.join}"
++ lib.optional (cfg.locality != null) "--locality=${cfg.locality}"
++ cfg.extraArgs);
addressOption = descr: defaultPort: { addressOption = descr: defaultPort: {
address = mkOption { address = mkOption {
type = types.str; type = types.str;
default = "localhost"; default = "localhost";
description = "Address to bind to for ${descr}"; description = "Address to bind to for ${descr}";
};
port = mkOption {
type = types.port;
default = defaultPort;
description = "Port to bind to for ${descr}";
};
}; };
port = mkOption {
type = types.port;
default = defaultPort;
description = "Port to bind to for ${descr}";
};
};
in in
{ {
@ -159,6 +157,16 @@ in
only contain open source features and open source code). only contain open source features and open source code).
''; '';
}; };
extraArgs = mkOption {
type = types.listOf types.str;
default = [];
example = [ "--advertise-addr" "[fe80::f6f2:::]" ];
description = ''
Extra CLI arguments passed to <command>cockroach start</command>.
For the full list of supported argumemnts, check <link xlink:href="https://www.cockroachlabs.com/docs/stable/cockroach-start.html#flags"/>
'';
};
}; };
}; };