A Go library for creating OVA (Open Virtual Appliance) files.
A Go library for creating OVA (Open Virtual Appliance) files.
This library was developed to simplify the virtual machine deployment supply
chain. It enables the creation of OVA (Open Virtual Appliance) files from
an existing OVF (Open Virtualization Format) file and its associated artifacts
(such as a virtual machine disk image).
An OVF only provides the configuration for a virtual machine appliance - it
does not provide the appliance’s disk, or other files. A OVA on the other hand
provides all of these in the form of a single compressed file. Using OVAs makes
deploying new appliances easier, and more maintainable.
While open source tools like packer and
VirtualBox can create these files, they cannot
easily create OVA files from existing OVFs. This is usually worked around using
VMWare’s ovftool. Because
ovftool is closed source, incorporating it into a VM development toolchain can
be a logistical headache. This library allows developers to incorporate
ovftool’s functionality into their toolchain without such headaches.
The library’s API is very small. The most notable function is theCreateOvaFile
function. This function creats an OVA using the providedOvaConfig
. Here is an example application that uses this function:
package main
import (
"log"
"github.com/stephen-fox/ovaify"
)
func main() {
config := ovaify.OvaConfig{
OutputFilePath: "/my-awesome.ova",
OvfFilePath: "/my-vm.ovf",
FilePathsToInclude: []string{
"/my-vm-disk-image.vmdk",
},
}
err := ovaify.CreateOvaFile(config)
if err != nil {
log.Fatal("Failed to create OVA - " + err.Error())
}
}