diff options
author | zimbatm <zimbatm@zimbatm.com> | 2021-07-19 13:29:39 +0200 |
---|---|---|
committer | zimbatm <zimbatm@zimbatm.com> | 2021-07-19 13:40:58 +0200 |
commit | efbd199ffbb5a09a7400e3adcef7552d263c9668 (patch) | |
tree | c31f8405b6b7b87cd05cc4ad7f67c493d5db136b /nixos/modules/services/cluster | |
parent | ca0a54d8e18170ba977e5b8a4ac2ce6c7056089c (diff) | |
download | nixpkgs-efbd199ffbb5a09a7400e3adcef7552d263c9668.tar nixpkgs-efbd199ffbb5a09a7400e3adcef7552d263c9668.tar.gz nixpkgs-efbd199ffbb5a09a7400e3adcef7552d263c9668.tar.bz2 nixpkgs-efbd199ffbb5a09a7400e3adcef7552d263c9668.tar.lz nixpkgs-efbd199ffbb5a09a7400e3adcef7552d263c9668.tar.xz nixpkgs-efbd199ffbb5a09a7400e3adcef7552d263c9668.tar.zst nixpkgs-efbd199ffbb5a09a7400e3adcef7552d263c9668.zip |
nixos/k3s: add configPath option
This is useful when the whole k3s config is generated on boot. The server address or token might be dynamically injected using user-data.
Diffstat (limited to 'nixos/modules/services/cluster')
-rw-r--r-- | nixos/modules/services/cluster/k3s/default.nix | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/nixos/modules/services/cluster/k3s/default.nix b/nixos/modules/services/cluster/k3s/default.nix index d0fb8cc5098..e5c51441690 100644 --- a/nixos/modules/services/cluster/k3s/default.nix +++ b/nixos/modules/services/cluster/k3s/default.nix @@ -67,6 +67,12 @@ in default = false; description = "Only run the server. This option only makes sense for a server."; }; + + configPath = mkOption { + type = types.nullOr types.path; + default = null; + description = "File path containing the k3s YAML config. This is useful when the config is generated (for example on boot)."; + }; }; # implementation @@ -74,12 +80,12 @@ in config = mkIf cfg.enable { assertions = [ { - assertion = cfg.role == "agent" -> cfg.serverAddr != ""; - message = "serverAddr should be set if role is 'agent'"; + assertion = cfg.role == "agent" -> (cfg.configPath != null || cfg.serverAddr != ""); + message = "serverAddr or configPath (with 'server' key) should be set if role is 'agent'"; } { - assertion = cfg.role == "agent" -> cfg.token != "" || cfg.tokenFile != null; - message = "token or tokenFile should be set if role is 'agent'"; + assertion = cfg.role == "agent" -> cfg.configPath != null || cfg.tokenFile != null || cfg.token != ""; + message = "token or tokenFile or configPath (with 'token' or 'token-file' keys) should be set if role is 'agent'"; } ]; @@ -115,12 +121,10 @@ in "${cfg.package}/bin/k3s ${cfg.role}" ] ++ (optional cfg.docker "--docker") ++ (optional cfg.disableAgent "--disable-agent") - ++ (optional (cfg.role == "agent") "--server ${cfg.serverAddr} ${ - if cfg.tokenFile != null then - "--token-file ${cfg.tokenFile}" - else - "--token ${cfg.token}" - }") + ++ (optional (cfg.serverAddr != "") "--server ${cfg.serverAddr}") + ++ (optional (cfg.token != "") "--token ${cfg.token}") + ++ (optional (cfg.tokenFile != null) "--token-file ${cfg.tokenFile}") + ++ (optional (cfg.configPath != null) "--config ${cfg.configPath}") ++ [ cfg.extraFlags ] ); }; |