75 lines
1.9 KiB
HCL
75 lines
1.9 KiB
HCL
locals {
|
|
control_planes = sort([
|
|
for name, node in var.nodes : name
|
|
if node.role == "control-plane"
|
|
])
|
|
|
|
workers = sort([
|
|
for name, node in var.nodes : name
|
|
if node.role == "worker"
|
|
])
|
|
|
|
ssh_managed_nodes = sort([
|
|
for name, node in var.nodes : name
|
|
if node.managed
|
|
])
|
|
|
|
ssh_node_hosts = {
|
|
for name, node in var.nodes : name => node.ip
|
|
if node.managed
|
|
}
|
|
|
|
ssh_node_users = {
|
|
for name, node in var.nodes : name => node.ssh_user
|
|
if node.managed && try(node.ssh_user, null) != null && node.ssh_user != var.default_ssh_user
|
|
}
|
|
|
|
required_node_labels = {
|
|
for name, node in var.nodes : name => node.labels
|
|
if length(node.labels) > 0
|
|
}
|
|
|
|
ignore_unavailable_nodes = sort([
|
|
for name, node in var.nodes : name
|
|
if node.ignore_unavailable
|
|
])
|
|
|
|
ananke_inventory = {
|
|
ssh_user = var.default_ssh_user
|
|
ssh_port = var.default_ssh_port
|
|
ssh_config_file = var.default_ssh_config_file
|
|
ssh_identity_file = var.default_ssh_identity_file
|
|
ssh_node_hosts = local.ssh_node_hosts
|
|
ssh_node_users = local.ssh_node_users
|
|
ssh_managed_nodes = local.ssh_managed_nodes
|
|
control_planes = local.control_planes
|
|
workers = local.workers
|
|
startup = {
|
|
required_node_labels_mode = "validate"
|
|
required_node_labels = local.required_node_labels
|
|
ignore_unavailable_nodes = local.ignore_unavailable_nodes
|
|
}
|
|
}
|
|
}
|
|
|
|
resource "kubernetes_labels" "node" {
|
|
for_each = local.required_node_labels
|
|
|
|
api_version = "v1"
|
|
kind = "Node"
|
|
field_manager = var.label_field_manager
|
|
force = var.force_node_label_conflicts
|
|
|
|
metadata {
|
|
name = each.key
|
|
}
|
|
|
|
labels = each.value
|
|
}
|
|
|
|
resource "local_file" "ananke_inventory_fragment" {
|
|
filename = var.ananke_inventory_fragment_path
|
|
file_permission = "0640"
|
|
content = "# Generated by Terraform. Do not add secrets here.\n${yamlencode(local.ananke_inventory)}"
|
|
}
|