Zsh Script to Create VMware Fusion 5 Vagrant Box
I'm sure vagrant package will soon support vmware fusion too, but as of this article it does not. So I wrote a little script that'll clean up, shrink, and package a vmware virtualmachine directory into a vagrant box.
It's should be run from the directory of the virtual machine. I put some checks in there to try and verify that the current directory is a vmware vm. However, if you do run it outside of a vmware vm directory Bad Things May Happen (TM).
Use with caution, I'm not responsible for any unintended consequences, yada yada yada.
#!/usr/bin/env zsh
# set: ft=sh
set -e
setopt extendedglob
vmrun stop *.vmx
# verify we're in a vmware vm directory
pwd | grep vmwarevm > /dev/null 2>&1
# just another check, make sure the files in this directory look like vmware
# virtual machine files
ls -d *.(vmxf|nvram|vmsd|vmx|vmdk) > /dev/null 2>&1
# remove all files that are not essential for a vagrant box
rm -f $(ls -d *~*.(vmxf|nvram|vmsd|vmx|vmdk))
# defragment and shrink the main vmware disk
vmware-vdiskmanager -d "Virtual Disk.vmdk"
vmware-vdiskmanager -k "Virtual Disk.vmdk"
# create the metadata.json for vmware fusion
cat <<EOF > metadata.json
{
"provider":"vmware_fusion"
}
EOF
# box it up using the virtual machine name as the box name.
box_name=$(basename "${PWD}" .vmwarevm)
tar cvzf "${box_name}.box" ./*
Comments !