Files
proxmox-tofu/proxmox/talos_linux.tf

71 lines
3.1 KiB
HCL

resource "talos_machine_secrets" "this" {}
data "talos_machine_configuration" "controlplane" {
cluster_name = var.cluster_name
cluster_endpoint = "https://${var.vip_shared_ip}:6443"
machine_type = "controlplane"
machine_secrets = talos_machine_secrets.this.machine_secrets
}
data "talos_machine_configuration" "worker" {
cluster_name = var.cluster_name
cluster_endpoint = "https://${var.vip_shared_ip}:6443"
machine_type = "worker"
machine_secrets = talos_machine_secrets.this.machine_secrets
}
data "talos_client_configuration" "this" {
cluster_name = var.cluster_name
client_configuration = talos_machine_secrets.this.client_configuration
endpoints = [for k, v in var.node_data.controlplanes : k]
}
resource "talos_machine_configuration_apply" "controlplane" {
depends_on = [proxmox_vm_qemu.kubernetes_control_plane]
client_configuration = talos_machine_secrets.this.client_configuration
machine_configuration_input = data.talos_machine_configuration.controlplane.machine_configuration
for_each = var.node_data.controlplanes
node = each.key
config_patches = [
templatefile("${path.module}/templates/machine_config_patches_controlplane.tftpl", {
hostname = each.value.hostname == null ? format("%s-cp-%s", var.cluster_name, index(keys(var.node_data.controlplanes), each.key)) : each.value.hostname
install_disk = each.value.install_disk
install_image = each.value.install_image
ip_address = "${each.key}/24"
network = var.network
network_gateway = var.network_gateway
vip_shared_ip = var.vip_shared_ip
}),
]
}
resource "talos_machine_configuration_apply" "worker" {
depends_on = [proxmox_vm_qemu.kubernetes_worker]
client_configuration = talos_machine_secrets.this.client_configuration
machine_configuration_input = data.talos_machine_configuration.worker.machine_configuration
for_each = var.node_data.workers
node = each.key
config_patches = [
templatefile("${path.module}/templates/machine_config_patches_worker.tftpl", {
hostname = each.value.hostname == null ? format("%s-worker-%s", var.cluster_name, index(keys(var.node_data.workers), each.key)) : each.value.hostname
install_disk = each.value.install_disk
install_image = each.value.install_image
ip_address = "${each.key}/24"
network = var.network
network_gateway = var.network_gateway
})
]
}
resource "talos_machine_bootstrap" "this" {
depends_on = [talos_machine_configuration_apply.controlplane]
client_configuration = talos_machine_secrets.this.client_configuration
node = [for k, v in var.node_data.controlplanes : k][0]
}
resource "talos_cluster_kubeconfig" "this" {
depends_on = [talos_machine_bootstrap.this]
client_configuration = talos_machine_secrets.this.client_configuration
node = [for k, v in var.node_data.controlplanes : k][0]
}