Files
proxmox-tofu/proxmox/talos_linux.tf
2024-11-10 19:01:12 +01:00

65 lines
2.7 KiB
HCL

resource "talos_machine_secrets" "this" {}
data "talos_machine_configuration" "controlplane" {
cluster_name = var.cluster_name
cluster_endpoint = var.cluster_endpoint
machine_type = "controlplane"
machine_secrets = talos_machine_secrets.this.machine_secrets
}
data "talos_machine_configuration" "worker" {
cluster_name = var.cluster_name
cluster_endpoint = var.cluster_endpoint
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.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
}),
file("${path.module}/files/cp-scheduling.yaml"),
]
}
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.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
})
]
}
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]
}