terraform { required_version = ">= 1.0" required_providers { talos = { source = "siderolabs/talos" version = "~> 0.4" } libvirt = { source = "dmacvicar/libvirt" version = "~> 0.7" } } } # Load variables from a .tfvars file variable "cluster_name" { description = "The name of the Talos cluster" type = string default = "evolved-npcs-cluster" } variable "memory_mb" { description = "Memory for each VM in MB" type = number default = 2048 } variable "vcpu_count" { description = "Number of vCPUs for each VM" type = number default = 2 } # Configure providers provider "talos" {} provider "libvirt" { uri = "qemu:///system" } # Create a dedicated network for Talos resource "libvirt_network" "talos_network" { name = "talos-network" mode = "nat" domain = "talos.local" addresses = ["10.5.0.0/24"] dhcp { enabled = true } dns { enabled = true } } # Generate machine secrets resource "talos_machine_secrets" "this" {} # Create control plane configuration data "talos_machine_configuration" "controlplane" { cluster_name = var.cluster_name cluster_endpoint = "https://10.5.0.2:6443" machine_type = "controlplane" machine_secrets = talos_machine_secrets.this.machine_secrets config_patches = [ yamlencode({ machine = { install = { disk = "/dev/vda" } } }) ] } # Download Talos kernel and initramfs resource "null_resource" "download_talos_files" { triggers = { version = "v1.6.4" } provisioner "local-exec" { command = <