Files
terraform-talos/proxmox/common.tf
2025-02-17 16:35:15 +02:00

118 lines
3.1 KiB
HCL

data "proxmox_virtual_environment_node" "node" {
for_each = { for inx, zone in local.zones : zone => inx if lookup(try(var.instances[zone], {}), "enabled", false) }
node_name = each.key
}
resource "proxmox_virtual_environment_download_file" "talos" {
for_each = { for inx, zone in local.zones : zone => inx if lookup(try(var.instances[zone], {}), "enabled", false) }
node_name = each.key
content_type = "iso"
datastore_id = "local"
file_name = "talos.raw.xz.img"
overwrite = false
# Hash: 376567988ad370138ad8b2698212367b8edcb69b5fd68c80be1f2ec7d603b4ba customization: {}
# Hash: 14e9b0100f05654bedf19b92313cdc224cbff52879193d24f3741f1da4a3cbb1 customization: siderolabs/binfmt-misc
decompression_algorithm = "zst"
url = "https://factory.talos.dev/image/14e9b0100f05654bedf19b92313cdc224cbff52879193d24f3741f1da4a3cbb1/v${var.release}/nocloud-amd64.raw.xz"
}
resource "proxmox_virtual_environment_file" "machineconfig" {
for_each = { for inx, zone in local.zones : zone => inx if lookup(try(var.instances[zone], {}), "enabled", false) }
node_name = each.key
content_type = "snippets"
datastore_id = "local"
source_raw {
data = templatefile("${path.module}/templates/common.yaml.tpl",
merge(local.kubernetes, try(var.instances["all"], {}), {
labels = "node-pool=common,karpenter.sh/nodepool=default"
nodeSubnets = [var.vpc_main_cidr[0], var.vpc_main_cidr[1]]
lbv4 = local.lbv4
kernelArgs = []
}))
file_name = "common.yaml"
}
}
resource "proxmox_virtual_environment_vm" "template" {
for_each = { for inx, zone in local.zones : zone => inx if lookup(try(var.instances[zone], {}), "enabled", false) }
name = "talos"
node_name = each.key
vm_id = each.value + 1000
on_boot = false
template = true
description = "Talos ${var.release} template"
tablet_device = false
machine = "q35"
cpu {
architecture = "x86_64"
cores = 1
sockets = 1
numa = true
type = "host"
}
scsi_hardware = "virtio-scsi-single"
disk {
file_id = proxmox_virtual_environment_download_file.talos[each.key].id
datastore_id = "local"
interface = "scsi0"
ssd = true
iothread = true
cache = "none"
size = 2
file_format = "raw"
}
network_device {
bridge = "vmbr0"
mtu = 1500
firewall = true
}
network_device {
bridge = "vmbr1"
mtu = 1400
firewall = false
}
operating_system {
type = "l26"
}
initialization {
dns {
servers = ["1.1.1.1", "2001:4860:4860::8888"]
}
ip_config {
ipv6 {
address = "auto"
}
}
ip_config {
ipv4 {
address = "dhcp"
}
}
datastore_id = "local"
user_data_file_id = proxmox_virtual_environment_file.machineconfig[each.key].id
}
serial_device {}
vga {
type = "serial0"
}
lifecycle {
ignore_changes = [
ipv4_addresses,
ipv6_addresses,
network_interface_names,
]
}
}