Foy my new work I have to get cozy with Puppet. Puppet provides a great learning VM, however it is in a OVA format, and I need it as a VHD so I can use it with Hyper-V in my homelab.

There are several ways and utilities to convert an OVA to VHD

That script however seems to be finniky at times, depending on the OVA file. I found that the VirtualBox convert utility seems to work quote a bit easier and more reliable.

It’s as easy as this:

  1. Install VirtualBox (Just install the ‘Virtual Application’, no need for all the other stuff)
  2. Extract the VMDK from the OVA (e.g. with 7-Zip)
  3. Run this in an Admin CMD session:
    $VMDK = "c:\path\to\machine.vmdk"
    $VHD  = "c:\path\to\machine.vhd" #the utility will create the VHD for you
    & "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" clonemedium --format vhd $vmdk $VHD
    

    And voila, you should have a VHD from the OVA that you can use in Hyper-V.

EDIT: 12/10/2018

So yeah that was not enough to get it to work in Hyper-V after all. I ended up using the StartWind v2v Converter. After that the VM is still no happy, you have to start the vm in ‘rescue mode’ to get it to boot happily.

CentOS_Recure_mode_for_Puppet_Learning_VM