feat(terraform): GPU worker node support (schematic, interface/diskSelector/swap tuning, gpu-node label, NVIDIA LTS extensions)
This commit is contained in:
@@ -74,6 +74,56 @@ resource "local_file" "controlplane_configs" {
|
||||
})
|
||||
}
|
||||
|
||||
# Worker machine configurations
|
||||
resource "local_file" "worker_configs" {
|
||||
for_each = var.worker_configs
|
||||
|
||||
filename = "${path.module}/../cluster-config/worker-${each.key}.yaml"
|
||||
|
||||
content = templatefile("${path.module}/templates/worker.tftpl", {
|
||||
version = "v1alpha1"
|
||||
hostname = each.value.hostname
|
||||
token = var.machine_token
|
||||
ca_crt = var.machine_ca_crt
|
||||
ca_key = var.machine_ca_key
|
||||
lan_ip = each.value.lan_ip
|
||||
lan_subnet = each.value.lan_subnet
|
||||
lan_gateway = each.value.lan_gateway
|
||||
network_interface = each.value.network_interface
|
||||
kubelet_image = local.kubelet_image
|
||||
cluster_dns_ip = local.cluster_dns_ip
|
||||
install_disk = each.value.install_disk
|
||||
factory_image = each.value.factory_image != null ? each.value.factory_image : (each.value.gpu_count > 0 ? data.talos_image_factory_urls.gpu_installer.urls.installer : local.factory_image)
|
||||
talos_version = var.talos_version
|
||||
dns_servers = var.cluster_config.dns_servers
|
||||
forgejo_registry_ip = var.forgejo_registry_ip
|
||||
forgejo_hostname = var.forgejo_hostname
|
||||
zone = each.value.zone
|
||||
gpu_count = each.value.gpu_count
|
||||
extra_disks = each.value.extra_disks
|
||||
swap_size = each.value.swap_size
|
||||
ephemeral_max_size = each.value.ephemeral_max_size
|
||||
|
||||
# Cluster config
|
||||
cluster_id = var.cluster_id
|
||||
cluster_secret = var.cluster_secret
|
||||
controlplane_ip = local.controlplane_ip
|
||||
cluster_name = var.cluster_name
|
||||
pod_subnets = var.cluster_config.pod_subnets
|
||||
service_subnets = var.cluster_config.service_subnets
|
||||
dns_domain = var.cluster_config.dns_domain
|
||||
bootstrap_token = var.bootstrap_token
|
||||
|
||||
# Kubernetes certs
|
||||
kubernetes_ca_crt = var.kubernetes_ca_crt
|
||||
kubernetes_ca_key = var.kubernetes_ca_key
|
||||
aggregator_ca_crt = var.aggregator_ca_crt
|
||||
aggregator_ca_key = var.aggregator_ca_key
|
||||
service_account_key = var.service_account_key
|
||||
secretbox_encryption_secret = var.secretbox_encryption_secret
|
||||
})
|
||||
}
|
||||
|
||||
# Output paths for reference
|
||||
output "controlplane_config_paths" {
|
||||
value = {
|
||||
@@ -81,3 +131,10 @@ output "controlplane_config_paths" {
|
||||
}
|
||||
description = "Paths to generated controlplane configs"
|
||||
}
|
||||
|
||||
output "worker_config_paths" {
|
||||
value = {
|
||||
for k, v in local_file.worker_configs : k => v.filename
|
||||
}
|
||||
description = "Paths to generated worker configs"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user