changed the agent_nodepools to be a list

This commit is contained in:
Karim Naufal 2022-03-09 03:15:15 +01:00
parent f825142720
commit 2b7d2722c5
4 changed files with 20 additions and 16 deletions

View File

@ -12,11 +12,11 @@ module "agents" {
placement_group_id = hcloud_placement_group.k3s.id placement_group_id = hcloud_placement_group.k3s.id
location = var.location location = var.location
server_type = each.value.server_type server_type = each.value.server_type
ipv4_subnet_id = hcloud_network_subnet.subnet[index(keys(var.agent_nodepools), each.value.nodepool_name) + 2].id ipv4_subnet_id = hcloud_network_subnet.subnet[[for i, v in var.agent_nodepools : i if v.name == each.value.nodepool_name][0] + 2].id
# We leave some room so 100 eventual Hetzner LBs that can be created perfectly safely # We leave some room so 100 eventual Hetzner LBs that can be created perfectly safely
# It leaves the subnet with 254 x 254 - 100 = 64416 IPs to use, so probably enough. # It leaves the subnet with 254 x 254 - 100 = 64416 IPs to use, so probably enough.
private_ipv4 = cidrhost(local.network_ipv4_subnets[index(keys(var.agent_nodepools), each.value.nodepool_name) + 2], each.value.index + 101) private_ipv4 = cidrhost(local.network_ipv4_subnets[[for i, v in var.agent_nodepools : i if v.name == each.value.nodepool_name][0] + 2], each.value.index + 101)
labels = { labels = {
"provisioner" = "terraform", "provisioner" = "terraform",

View File

@ -1,6 +1,6 @@
locals { locals {
# if we are in a single cluster config, we use the default klipper lb instead of Hetzner LB # if we are in a single cluster config, we use the default klipper lb instead of Hetzner LB
is_single_node_cluster = var.control_plane_count + length(keys(var.agent_nodepools)) == 1 is_single_node_cluster = var.control_plane_count + length(var.agent_nodepools) == 1
ssh_public_key = trimspace(file(var.public_key)) ssh_public_key = trimspace(file(var.public_key))
# ssh_private_key is either the contents of var.private_key or null to use a ssh agent. # ssh_private_key is either the contents of var.private_key or null to use a ssh agent.
ssh_private_key = var.private_key == null ? null : trimspace(file(var.private_key)) ssh_private_key = var.private_key == null ? null : trimspace(file(var.private_key))
@ -170,10 +170,10 @@ locals {
install_k3s_agent = concat(local.common_commands_install_k3s, ["curl -sfL https://get.k3s.io | INSTALL_K3S_SKIP_START=true INSTALL_K3S_SKIP_SELINUX_RPM=true INSTALL_K3S_CHANNEL=${var.initial_k3s_channel} INSTALL_K3S_EXEC=agent sh -"], local.apply_k3s_selinux) install_k3s_agent = concat(local.common_commands_install_k3s, ["curl -sfL https://get.k3s.io | INSTALL_K3S_SKIP_START=true INSTALL_K3S_SKIP_SELINUX_RPM=true INSTALL_K3S_CHANNEL=${var.initial_k3s_channel} INSTALL_K3S_EXEC=agent sh -"], local.apply_k3s_selinux)
agent_nodepools = merge([ agent_nodepools = merge([
for nodepool_name, nodepool_obj in var.agent_nodepools : { for nodepool_obj in var.agent_nodepools : {
for index in range(nodepool_obj.count) : for index in range(nodepool_obj.count) :
format("%s-%s", nodepool_name, index) => { format("%s-%s", nodepool_obj.name, index) => {
nodepool_name : nodepool_name, nodepool_name : nodepool_obj.name,
server_type : nodepool_obj.server_type, server_type : nodepool_obj.server_type,
index : index index : index
} }

View File

@ -28,17 +28,21 @@ control_plane_server_type = "cpx11"
# As for the agent nodepools, below is just an example, if you do not want nodepools, just use one, # As for the agent nodepools, below is just an example, if you do not want nodepools, just use one,
# and change the name to what you want, it need not be "agent-big" or "agent-small", also give them the subnet prefer. # and change the name to what you want, it need not be "agent-big" or "agent-small", also give them the subnet prefer.
# For single node clusters set this equal to {} # For single node clusters set this equal to [] or just set the counts to 0
agent_nodepools = { # IMPORTANT: Once the cluster is created, you can change the count, and even set it to 0, but do not remove a nodepool from the list.
agent-big = { # You can add others at the end of the list if you want.
agent_nodepools = [
{
name = "agent-small",
server_type = "cpx11",
count = 2
},
{
name = "agent-large",
server_type = "cpx21", server_type = "cpx21",
count = 1 count = 1
} }
agent-small = { ]
server_type = "cpx11",
count = 2
}
}
# That will depend on how much load you want it to handle, see https://www.hetzner.com/cloud/load-balancer # That will depend on how much load you want it to handle, see https://www.hetzner.com/cloud/load-balancer
load_balancer_type = "lb11" load_balancer_type = "lb11"

View File

@ -53,8 +53,8 @@ variable "load_balancer_disable_ipv6" {
variable "agent_nodepools" { variable "agent_nodepools" {
description = "Number of agent nodes." description = "Number of agent nodes."
type = map(any) type = list(any)
default = {} default = []
} }
variable "hetzner_ccm_version" { variable "hetzner_ccm_version" {