On our CI system, we’ve used a layered, template-chaining approach to building VMs, wherein we:
- build base_images from iso with
- currently these are being exported as ovf
- build more “layers” of base images from the above .ovf using
- build final customized user images from any of the above .ovf using
- customization includes expanding the virtual disk included in the .ovf
Following this approach it does not initially appear possible to resize the virtual disk in the final
virtualbox-ovf build stage because:
virtualbox-isoexports as .ovf/.ova, which more or less requires VMware’s .vdmk format
vboxmanage modifymedium --resizeonly supports .vdi/.vhd formats
I see that the
virtualbox-iso stepCreateDisk function hard-codes the virtual disk format to
VDI. This is good because I think I can now assume that the only reason I’m getting a .vmdk is that I’m exporting to .ovf.
Without exporting from
virtualbox-ovf, how can I “chain” packer virtualbox builds, while preserving the vdi file format?
I have gathered minor pieces of this puzzle, such as:
- I know I can skip_export but I don’t see how I can import the machine with converting to ovf.
- I know I can vboxmanage and vboxmanage-post any commands I want, but finding the right sequence eludes me. I could clone the .vmdk as a .vdi in any build stage, but I don’t understand what builder can accept a .vdi as input. They only seems to support importing ovf, which only seems to support .vdmk.
This just feels like a lot of work to figure out how to do something quite simple. FWIW I implemented this same idea effortlessly using
vsphere-clone builders - all I had to do was specify the disk size in the downstream
Anyone have any ideas or suggestions?