Contents
VMware requires you to have an account to logon and download a free tool called “VMware OVF Tool”. That alone is not annoying. What is annoying is that the tool is extremely slow. There is a much faster way to create an OVA without the need of this tool.
Using the ovftool is easy enough, the following is an example syntax.
ovftool.exe c:\ovf-to-ova-test\my.ovf c:\ovf-to-ova-test\my.ova
Basically this tool, opens the ovf, validates it against an SHA1 manifest and begins to write the tool.
This can be accomplished using tar. One could achieve the same result using tar in Windows using CygWin or Linux. While I successfully created an OVA in CygWin the ownership reflected my username and group, I wanted to match the VMware ownership and group of “someone”.
It is also important to note that the order of the files are important. The file must be created with the ????.ovf file first followed by the .mf file and then the .vmdk files.
Here is how it can be done in Linux. The assumption here is that all the files that are needed are in its own directory.
#!/bin/bash # Create a user someone if not exists id -u someone &>/dev/null || useradd someone sha1sum --status -c *.mf if [ "$?" = "0" ] ; then tar cvf myova.ova *.ovf --owner=someone --group=someone tar uvf myova.ova *.mf *.vmdk --owner=someone --group=someone else echo "bad checksum" fi
Update
Updated 9/9/2023. A minor change to the bash script for sha256 rather than sha1 and added a check for the manifest. If it doesn’t exist, then create the manifest using sha256.
#!/bin/bash
# Create a user someone if not exists
id -u someone &>/dev/null || useradd someone
# Create a manifest if not exists
[ ! -f myova.mf ] && openssl sha256 *.vmdk *.ovf > myova.mf
sha256sum --status -c *.mf
if [ "$?" = "0" ] ; then
tar cvf myova.ova *.ovf --owner=someone --group=someone
tar uvf myova.ova *.mf *.vmdk --owner=someone --group=someone
else
echo "bad checksum"
fi
Source(s)
- https://unix.stackexchange.com/questions/28526/add-a-user-to-the-system-only-if-it-doesnt-exist
- https://askubuntu.com/questions/61826/how-do-i-check-the-sha1-hash-of-a-file
- https://www.linuxquestions.org/questions/programming-9/script-to-check-if-two-variables-match-always-says-they-match-even-if-they-don%27t-bash-4175543893/
- https://unix.stackexchange.com/questions/125419/modify-file-ownership-for-files-inside-tar-archive
- https://williamlam.com/2012/01/how-to-create-manifest-file-for-ovf.html