An OVF package at its core is a distribution
package that consists of the following:
- One OVF descriptor file (.ovf file). This
is commonly referred to as the OVF envelope, and is largely the subject of
this tooling support. The OVF descriptor file defines the content and
requirements of the packaged virtual machine / virtual appliance, in support
of a successful / consistent deployment of this package.
- Zero or one OVF manifest file (.mf file).
The manifest file contains the SHA-1 digests of the individual files in the
OVF package.
- Zero or one OVF certification file (.cert
file). An OVF package may be signed by signing the manifest file. The
signature of the digest is stored in a .cert file along with the
base64-encoded X.509 certificate
- Zero or more disk image files. These files
represent the virtual disks that support the defined virtual image(s) or
appliance
- Zero or more additional resource files,
such as ISO images
To support the adoption of the OVF distribution format, we have developed a
tooling environment that assists with the composition and packaging of OVF based
artifacts. The tooling has a number of usage scenarios which will be explained
in further detail, but its two focus points are:
- OVF envelope authoring / editing
- OVF package publishing
To expand on the OVF descriptor (envelope) a bit, the envelope XML describes
all metadata for the virtual machine(s) (including virtual hardware) that make
up this OVF package.
The envelope consists of the following parts:
- A version
indication, defined by the XML namespace URI.
- A list of
file references to all external files that are part of this OVF package, defined
by the "References" element and its "File" child
elements. These are typically virtual disk files, ISO images, and
internationalization resources.
- A
metadata part, defined by "section" elements detailing things such
as networks and virtual disks.
- A
description of the appliance content, which is either a single virtual machine
( "VirtualSystem" element) or a collection of multiple virtual
machines ( "VirtualSystemCollection" element).
- A
specification of message resource bundles for zero or more locales, defined by a
Strings element for each locale.
The following diagram illustrates the construct of an OVF envelope.
