Listing 1: Netzwerkdefinition in OpenTofu // SDN-Zone erzeugen resource "proxmox_virtual_environment_sdn_zone_simple" "sdn1" { id = "sdn1" nodes = [var.node_name] mtu = 1500 // could also be netbox ipam = "pve" dhcp = "dnsmasq" } // VNet erstellen resource "proxmox_virtual_environment_sdn_vnet" "vnet1" { id = "vnet1" zone = proxmox_virtual_environment_sdn_zone_simple.sdn1.id } // Subnet mit aktivem DHCP anlegen resource "proxmox_virtual_environment_sdn_subnet" "dhcp1" { cidr = "10.10.20.0/24" vnet = proxmox_virtual_environment_sdn_vnet.vnet1.id gateway = "10.10.20.1" dhcp_dns_server = "10.10.20.1" dns_zone_prefix = "proxmox-tofu.demo" snat = true dhcp_range = { start_address = "10.10.20.10" end_address = "10.10.20.100" } } // SDN-Konfiguration ausrollen resource "proxmox_virtual_environment_sdn_applier" "sdn1" { depends_on = [ proxmox_virtual_environment_sdn_zone_simple.sdn1, proxmox_virtual_environment_sdn_vnet.vnet1, proxmox_virtual_environment_sdn_subnet.dhcp1 ] } Listing 2: Vagrantfile für eine Maschine ENV['VAGRANT_EXPERIMENTAL'] = 'typed_triggers' VM_CPU = 2 VM_MEMORY_GB = 4 VM_ROOT_DISK_SIZE_GB = 15 Vagrant.configure('2') do |config| config.vm.box = 'proxmox-ve-amd64' config.vm.hostname = 'pve.example.com' config.vm.provider :libvirt do |lv, config| lv.memory = VM_MEMORY_GB*1024 lv.cpus = VM_CPU lv.cpu_mode = 'host-passthrough' lv.nested = true lv.keymap = 'ch' lv.machine_virtual_size = VM_ROOT_DISK_SIZE_GB end ip = '10.10.10.2' config.vm.network :private_network, libvirt__network_name: 'proxmox-terraform-demo', ip: ip, auto_config: false, libvirt__dhcp_enabled: false, libvirt__forward_mode: 'nat' config.vm.provision :shell, path: 'provision.sh', args: ip config.vm.provision :shell, path: 'grub.sh' config.vm.provision :shell, path: 'provision-pveproxy-certificate.sh', args: ip config.vm.provision :shell, path: 'summary.sh', args: ip conf