Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/stephen-fox/ovaify
A Go library for creating OVA (Open Virtual Appliance) files.
https://github.com/stephen-fox/ovaify
ova ovf virtual-machine
Last synced: about 2 months ago
JSON representation
A Go library for creating OVA (Open Virtual Appliance) files.
- Host: GitHub
- URL: https://github.com/stephen-fox/ovaify
- Owner: stephen-fox
- License: mit
- Created: 2018-12-01T07:01:46.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2019-01-26T18:11:43.000Z (almost 6 years ago)
- Last Synced: 2024-06-21T06:35:28.787Z (7 months ago)
- Topics: ova, ovf, virtual-machine
- Language: Go
- Homepage:
- Size: 5.86 KB
- Stars: 6
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ovaify
## What is it?
A Go library for creating OVA (Open Virtual Appliance) files.## Use cases
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](https://packer.io) and
[VirtualBox](https://www.virtualbox.org/) can create these files, they cannot
easily create OVA files from existing OVFs. This is usually worked around using
VMWare's [ovftool](https://www.vmware.com/support/developer/ovf/). 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.## API
The library's API is very small. The most notable function is the
`CreateOvaFile` function. This function creats an OVA using the provided
`OvaConfig`. Here is an example application that uses this function:
```go
package mainimport (
"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())
}
}
```