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.
This commit is contained in:
parent
ca0a54d8e1
commit
efbd199ffb
1 changed files with 14 additions and 10 deletions
|
@ -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 ]
|
||||
);
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue