diff --git a/agent_nodes.tf b/agent_nodes.tf index 8e248e9..805f8f5 100644 --- a/agent_nodes.tf +++ b/agent_nodes.tf @@ -113,7 +113,7 @@ resource "null_resource" "agents_install" { // Install k3s provisioner "remote-exec" { inline = [ - "INSTALL_K3S_SELINUX_WARN=${var.k3s_selinux_warn} INSTALL_K3S_VERSION=${local.k3s_version} sh /tmp/k3s-installer agent ${local.agents_metadata[each.key].flags}", + "${local.install_env_vars} INSTALL_K3S_VERSION=${local.k3s_version} sh /tmp/k3s-installer agent ${local.agents_metadata[each.key].flags}", "until systemctl is-active --quiet k3s-agent.service; do sleep 1; done" ] } diff --git a/server_nodes.tf b/server_nodes.tf index 73fe6d2..f02b40d 100644 --- a/server_nodes.tf +++ b/server_nodes.tf @@ -8,6 +8,8 @@ locals { // If root_advertise_ip is IPv6 wrap it in square brackets for IPv6 K3S URLs otherwise leave it raw root_advertise_ip_k3s = can(regex("::", local.root_advertise_ip)) ? "[${local.root_advertise_ip}]" : local.root_advertise_ip + // string representation of all specified extra k3s installation env vars + install_env_vars = join(" ", [for k, v in var.k3s_install_env_vars : "${k}=${v}"]) root_server_connection = { type = try(var.servers[local.root_server_name].connection.type, "ssh") @@ -213,7 +215,7 @@ resource "null_resource" "servers_install" { // Install k3s server provisioner "remote-exec" { inline = [ - "INSTALL_K3S_SELINUX_WARN=${var.k3s_selinux_warn} INSTALL_K3S_VERSION=${local.k3s_version} sh /tmp/k3s-installer server ${local.servers_metadata[each.key].flags}", + "${local.install_env_vars} INSTALL_K3S_VERSION=${local.k3s_version} sh /tmp/k3s-installer server ${local.servers_metadata[each.key].flags}", "until ${local.kubectl_cmd} get node ${local.servers_metadata[each.key].name}; do sleep 1; done" ] } diff --git a/terraform.tfvars b/terraform.tfvars new file mode 100644 index 0000000..77b6fb2 --- /dev/null +++ b/terraform.tfvars @@ -0,0 +1,3 @@ +k3s_install_env_vars = { + INSTALL_K3S_BIN_DIR = "/usr/bin" +} \ No newline at end of file diff --git a/variables.tf b/variables.tf index fa6eb57..927bed3 100644 --- a/variables.tf +++ b/variables.tf @@ -9,10 +9,15 @@ variable "k3s_version" { default = "latest" } -variable "k3s_selinux_warn" { - description = "Force the install script to log a warning rather than fail when k3s tries to install the SELinux policies." - type = bool - default = false +variable "k3s_install_env_vars" { + description = "map of enviroment variables that are passed to the k3s installation script (see https://docs.k3s.io/reference/env-variables)" + type = map(string) + default = null + + validation { + condition = !can(var.k3s_install_env_vars["INSTALL_K3S_VERSION"]) + error_message = "env var \"INSTALL_K3S_VERSION\" needs to be set via variable k3s_version" + } } variable "name" { @@ -95,7 +100,7 @@ variable "servers" { } validation { condition = !can(values(var.servers)[*].flags) || !contains([for v in var.servers : can(tolist(v.flags))], false) - error_message = "Field servers..flags must be a list of string." + error_message = "Field servers..flags must be a list of string (see: https://docs.k3s.io/cli/server)." } validation { condition = !can(values(var.servers)[*].annotations) || !contains([for v in var.servers : can(tomap(v.annotations))], false) @@ -126,7 +131,7 @@ variable "agents" { } validation { condition = !can(values(var.agents)[*].flags) || !contains([for v in var.agents : can(tolist(v.flags))], false) - error_message = "Field agents..flags must be a list of string." + error_message = "Field agents..flags must be a list of string (see: https://docs.k3s.io/cli/agent)." } validation { condition = !can(values(var.agents)[*].annotations) || !contains([for v in var.agents : can(tomap(v.annotations))], false)