79 lines
3.3 KiB
HCL
79 lines
3.3 KiB
HCL
# Generate talconfig.yaml from your terraform variables and locals
|
|
resource "local_file" "talconfig" {
|
|
filename = "${path.module}/../generated/talconfig.yaml"
|
|
content = templatefile("${path.module}/templates/talconfig.yaml.tpl", {
|
|
# Cluster configuration
|
|
cluster_name = var.cluster_name
|
|
cluster_endpoint = local.cluster_endpoint
|
|
cluster_domain = var.cluster_domain
|
|
talos_version = var.talos_version
|
|
talos_factory_schematic_id = var.talos_factory_schematic_id
|
|
control_plane_vip = var.control_plane_vip
|
|
|
|
# Network configuration
|
|
dns_servers = var.dns_servers
|
|
gateway = local.primary_gateway
|
|
network_cidr = local.primary_network_cidr
|
|
network_mask = split("/", local.primary_network_cidr)[1]
|
|
|
|
control_plane_nodes = [for node in var.nodes : {
|
|
name = node.name,
|
|
role = node.role,
|
|
networks = node.networks,
|
|
tags = node.tags,
|
|
proxmox_node = node.proxmox_node
|
|
} if node.role == "controlplane"]
|
|
|
|
compute_workers = [for node in var.nodes : {
|
|
name = node.name,
|
|
role = node.role,
|
|
networks = node.networks,
|
|
tags = node.tags,
|
|
proxmox_node = node.proxmox_node
|
|
} if node.role == "worker" && contains(lookup(node, "tags", []), "compute")]
|
|
|
|
storage_workers = [for node in var.nodes : {
|
|
name = node.name,
|
|
role = node.role,
|
|
networks = node.networks,
|
|
tags = node.tags,
|
|
proxmox_node = node.proxmox_node,
|
|
additional_disk_size = lookup(node, "additional_disk_size", "")
|
|
} if node.role == "worker" && contains(lookup(node, "tags", []), "storage")]
|
|
|
|
gpu_workers = [for node in var.nodes : {
|
|
name = node.name,
|
|
role = node.role,
|
|
networks = node.networks,
|
|
tags = node.tags,
|
|
proxmox_node = node.proxmox_node
|
|
} if node.role == "worker" && contains(lookup(node, "tags", []), "gpu")]
|
|
|
|
# Other variables
|
|
cluster_pod_nets = var.cluster_pod_nets
|
|
cluster_svc_nets = var.cluster_svc_nets
|
|
cni_name = var.cni_name
|
|
|
|
# --- Pass the proxy config ---
|
|
image_cache_proxy = var.image_cache_proxy
|
|
})
|
|
}
|
|
|
|
# (The output block is already correct from the last fix)
|
|
output "node_organization" {
|
|
description = "How your nodes are organized for Talos configuration"
|
|
value = {
|
|
control_plane_nodes = [for node in var.nodes : {
|
|
name = node.name, ip = node.networks[0].ip, tags = lookup(node, "tags", [])
|
|
} if node.role == "controlplane"]
|
|
compute_workers = [for node in var.nodes : {
|
|
name = node.name, ip = node.networks[0].ip, tags = lookup(node, "tags", [])
|
|
} if node.role == "worker" && contains(lookup(node, "tags", []), "compute")]
|
|
storage_workers = [for node in var.nodes : {
|
|
name = node.name, ip = node.networks[0].ip, tags = lookup(node, "tags", []), additional_disk = lookup(node, "additional_disk_size", null)
|
|
} if node.role == "worker" && contains(lookup(node, "tags", []), "storage")]
|
|
gpu_workers = [for node in var.nodes : {
|
|
name = node.name, ip = node.networks[0].ip, tags = lookup(node, "tags", [])
|
|
} if node.role == "worker" && contains(lookup(node, "tags", []), "gpu")]
|
|
}
|
|
} |