Files
terraform-proxmox-talos/cluster.tf
2025-02-23 14:40:45 +01:00

60 lines
3.1 KiB
HCL

resource "talos_machine_secrets" "machine_secrets" {}
data "talos_client_configuration" "talosconfig" {
cluster_name = var.cluster_name
client_configuration = talos_machine_secrets.machine_secrets.client_configuration
endpoints = [for config in var.talos_controlplane_config : config.ip]
}
data "talos_machine_configuration" "machineconfig_cp" {
for_each = { for machine in var.talos_controlplane_config : machine.name => machine }
cluster_name = var.cluster_name
cluster_endpoint = "https://${each.value.ip}:6443"
machine_type = "controlplane"
machine_secrets = talos_machine_secrets.machine_secrets.machine_secrets
}
resource "talos_machine_configuration_apply" "cp_config_apply" {
for_each = { for machine in var.talos_controlplane_config : machine.name => machine }
depends_on = [proxmox_virtual_environment_vm.talos_cp]
client_configuration = talos_machine_secrets.machine_secrets.client_configuration
machine_configuration_input = data.talos_machine_configuration.machineconfig_cp[each.value.name].machine_configuration
node = each.value.ip
}
data "talos_machine_configuration" "machineconfig_worker" {
for_each = { for machine in var.talos_worker_config : machine.name => machine }
cluster_name = var.cluster_name
cluster_endpoint = "https://${var.talos_controlplane_config[0].ip}:6443"
machine_type = "worker"
machine_secrets = talos_machine_secrets.machine_secrets.machine_secrets
}
resource "talos_machine_configuration_apply" "worker_config_apply" {
for_each = { for machine in var.talos_worker_config : machine.name => machine }
depends_on = [proxmox_virtual_environment_vm.talos_worker]
client_configuration = talos_machine_secrets.machine_secrets.client_configuration
machine_configuration_input = data.talos_machine_configuration.machineconfig_worker[each.value.name].machine_configuration
node = each.value.ip
}
resource "talos_machine_bootstrap" "bootstrap" {
depends_on = [talos_machine_configuration_apply.cp_config_apply]
client_configuration = talos_machine_secrets.machine_secrets.client_configuration
node = var.talos_controlplane_config[0].ip
}
data "talos_cluster_health" "health" {
depends_on = [talos_machine_configuration_apply.cp_config_apply, talos_machine_configuration_apply.worker_config_apply]
client_configuration = data.talos_client_configuration.talosconfig.client_configuration
control_plane_nodes = [for config in var.talos_controlplane_config : config.ip]
worker_nodes = [for config in var.talos_worker_config : config.ip]
endpoints = data.talos_client_configuration.talosconfig.endpoints
}
resource "talos_cluster_kubeconfig" "kubeconfig" {
depends_on = [talos_machine_bootstrap.bootstrap, data.talos_cluster_health.health]
client_configuration = talos_machine_secrets.machine_secrets.client_configuration
node = var.talos_controlplane_config[0].ip
}