terraform { backend "s3" { bucket = "13225-wheatley-states" key = "pve01-templates.tfstate" region = "main" skip_credentials_validation = true skip_metadata_api_check = true skip_region_validation = true force_path_style = true } } provider "proxmox" { endpoint = var.proxmox_endpoint api_token = var.proxmox_api_token ssh { agent = true username = "root" } } locals { talos_versions = ["1.11.5"] } data "http" "schematic" { url = "https://factory.talos.dev/schematics" method = "POST" request_body = file("${path.module}/schematic.yaml") request_headers = { "Content-Type" = "application/x-yaml" } } locals { schematic_id = jsondecode(data.http.schematic.response_body)["id"] storagepool = "nvme-fastpool" } resource "proxmox_virtual_environment_download_file" "talos-image" { for_each = toset(local.talos_versions) node_name = "pve01" datastore_id = "local" content_type = "iso" url = "https://factory.talos.dev/image/${local.schematic_id}/v${each.value}/nocloud-amd64-secureboot.raw.gz" file_name = "talos-${each.value}-nocloud-amd64-secureboot.img" decompression_algorithm = "gz" } resource "proxmox_virtual_environment_vm" "talos-template" { depends_on = [proxmox_virtual_environment_download_file.talos-image] for_each = toset(local.talos_versions) template = true vm_id = 10000 + tonumber(replace(each.value, ".", "")) name = "talos-template-${each.value}" node_name = "pve01" tags = ["tofu"] bios = "ovmf" on_boot = true machine = "q35" operating_system { type = "l26" } agent { enabled = true } cpu { cores = 2 sockets = 1 type = "x86-64-v2-AES" } memory { dedicated = 2048 } disk { datastore_id = local.storagepool interface = "virtio0" file_id = proxmox_virtual_environment_download_file.talos-image[each.value].id file_format = "raw" } efi_disk { datastore_id = local.storagepool file_format = "raw" type = "4m" } tpm_state { datastore_id = local.storagepool version = "v2.0" } network_device { bridge = "vmbr1" } }