From 852739337bd5ab4c57fd1eab9e62e76ac2f1a7cc Mon Sep 17 00:00:00 2001 From: Jörg Thalheim Date: Wed, 7 Apr 2021 20:46:10 +0200 Subject: nixos/k3s: add to environment.systemPackages for adminstration --- nixos/modules/services/cluster/k3s/default.nix | 2 ++ 1 file changed, 2 insertions(+) (limited to 'nixos/modules/services/cluster/k3s/default.nix') diff --git a/nixos/modules/services/cluster/k3s/default.nix b/nixos/modules/services/cluster/k3s/default.nix index 5ab0286a38a..b5506057db8 100644 --- a/nixos/modules/services/cluster/k3s/default.nix +++ b/nixos/modules/services/cluster/k3s/default.nix @@ -81,6 +81,8 @@ in # supporting it, or their bundled containerd systemd.enableUnifiedCgroupHierarchy = false; + environment.systemPackages = [ config.services.k3s.package ]; + systemd.services.k3s = { description = "k3s service"; after = [ "network.service" "firewall.service" ] ++ (optional cfg.docker "docker.service"); -- cgit 1.4.1 From 11a38f62f0bfcb655e339498897b0d25ac37fa97 Mon Sep 17 00:00:00 2001 From: Jörg Thalheim Date: Fri, 9 Apr 2021 11:50:03 +0200 Subject: k3s: add tokenFile option To avoid having secrets in the nix store. --- nixos/modules/services/cluster/k3s/default.nix | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) (limited to 'nixos/modules/services/cluster/k3s/default.nix') diff --git a/nixos/modules/services/cluster/k3s/default.nix b/nixos/modules/services/cluster/k3s/default.nix index b5506057db8..99e47e867b3 100644 --- a/nixos/modules/services/cluster/k3s/default.nix +++ b/nixos/modules/services/cluster/k3s/default.nix @@ -35,10 +35,20 @@ in token = mkOption { type = types.str; - description = "The k3s token to use when connecting to the server. This option only makes sense for an agent."; + description = '' + The k3s token to use when connecting to the server. This option only makes sense for an agent. + WARNING: This option will expose store your token unencrypted world-readable in the nix store. + If this is undesired use the tokenFile option instead. + ''; default = ""; }; + tokenFile = mkOption { + type = types.nullOr types.path; + description = "File path containing k3s token to use when connecting to the server. This option only makes sense for an agent."; + default = null; + }; + docker = mkOption { type = types.bool; default = false; @@ -68,8 +78,8 @@ in message = "serverAddr should be set if role is 'agent'"; } { - assertion = cfg.role == "agent" -> cfg.token != ""; - message = "token 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'"; } ]; @@ -104,7 +114,12 @@ in "${cfg.package}/bin/k3s ${cfg.role}" ] ++ (optional cfg.docker "--docker") ++ (optional cfg.disableAgent "--disable-agent") - ++ (optional (cfg.role == "agent") "--server ${cfg.serverAddr} --token ${cfg.token}") + ++ (optional (cfg.role == "agent") "--server ${cfg.serverAddr} ${ + if cfg.tokenFile != null then + "--token-file ${cfg.tokenFile}" + else + "--token ${cfg.token}" + }") ++ [ cfg.extraFlags ] ); }; -- cgit 1.4.1