Research delivery, not a script/code change -- no live infrastructure touched, no DOCFIX number assigned (matches the changelog-20260709-dc-dc-design.md precedent for design/research-only deliveries).
FILES: opentofu/README.md (new dedicated section, sourced), docs/dc-dc-deployment-workflow.md (gap register item 4, summary table).
WHAT: closes the open question from DOCFIX-145 -- whether modules/ cloudinit-vm applies to OPNsense. It does not (confirmed, not just hedged): OPNsense's own forum consensus is that FreeBSD's cloud-init support "is not great yet." But there IS a real, officially documented alternative that uses the exact same mechanical shape already built:
/conf/config.xml. Supported filesystems: GPT, MBR, ZFS pool, msdosfs (FAT).cloudinit-vm (a secondary volume attached as a cdrom disk), different payload (a plain ISO9660 image with /conf/config.xml, not a NoCloud seed).autorun hook (/usr/local/etc/rc.syshook.d/import/) exists for more advanced provisioning beyond a static config.xml..img.bz2 -> bunzip2 -> qemu-img convert -f raw -O qcow2 -> qemu-img resize -> boot via libvirt with a FreeBSD os-variant, serial console, no graphics.node-vm's PXE-boot-priority design.All findings sourced with URLs in opentofu/README.md's dedicated section (docs.opnsense.org, the OPNsense forum, opnsense/core GitHub issues, and one independent KVM how-to + one community VM-image-building project used for cross-corroboration).
WHAT STILL NEEDS BUILDING (not done this delivery, itemized so it's a punch-list not a vague "TODO"):
libvirt_volume's create.content.url almost certainly does a plain HTTP fetch with no decompression, so the .img.bz2 can't be consumed directly; the qcow2 needs to exist before OpenTofu sees it./conf/config.xml (genisoimage/xorriso -- exact tool/flags not yet verified against a real build) to feed a libvirt_volume's create.content.url, the same way libvirt_cloudinit_disk.path feeds cloudinit-vm's seed volume today.config.xml content for OPNsense's LAN/WAN/routing role at each site -- real design work, not started.REVERT: git checkout HEAD~ -- opentofu/README.md docs/dc-dc-deployment-workflow.md.
Build the OPNsense-specific module (working name: modules/opnsense-edge) once items 1-3 above are ready, following the now-confirmed pattern. Verify the ISO9660 Importer behavior on a real boot as part of that work, not before -- this research pins down the mechanism with reasonable confidence but the module build is where it gets tested for real.