Create a virtual machine using libvirt/KVM inside the containerized libvirt service that will act as a baremetal node for Ironic to manage. This VM will be controlled by Ironic through the Redfish BMC emulator (sushy-tools).
The VM needs to be configured to boot from network (PXE) and have characteristics similar to a real baremetal server.
Fully Containerized: VMs run inside the stackbox-libvirt container (Metal3 style), ensuring zero impact on host libvirt configuration.
Benefits of Containerized Approach
- ✅ Zero host impact: No changes to host libvirt
- ✅ Portable: Same setup on any machine with Docker
- ✅ Clean removal:
docker-compose down removes everything
- ✅ Matches CI: Identical to Metal3/upstream CI setup
- ✅ Isolated: Multiple StackBox instances won't conflict
- ✅ No permissions: No need for user in libvirt group
Goals
- Create libvirt VM programmatically
- Configure VM for PXE boot
- Set appropriate hardware specs (memory, CPU, disk)
- Make VM accessible to Ironic
- Store VM definition persistently
Tasks
Acceptance Criteria
Create a virtual machine using libvirt/KVM inside the containerized libvirt service that will act as a baremetal node for Ironic to manage. This VM will be controlled by Ironic through the Redfish BMC emulator (sushy-tools).
The VM needs to be configured to boot from network (PXE) and have characteristics similar to a real baremetal server.
Fully Containerized: VMs run inside the
stackbox-libvirtcontainer (Metal3 style), ensuring zero impact on host libvirt configuration.Benefits of Containerized Approach
docker-compose downremoves everythingGoals
Tasks
stackbox/core/vm.pyfor VM managementAcceptance Criteria