Remote Repository creation
A Remote Repository contains different appliances ready to download. These appliances are defined by the OVF standard. You can see a Repository Space as an index of Virtual Images. This index can be published on the Internet, for public access, or within the Intranet of your company, for controlled and secured access, and allows virtual image creators to share their images with other abiquo users.
The content of a Remote Repository is :
- ovfindex.xml : metadata describing all the exposed OVF Package.
- myApp*.ovf* : OVF Descriptor document of the shared virtual appliances templates.
- anyDisk.vmdk : Any required file by the OVF Descriptor document (such virtual disk files).
| Use abispace Abiquo's default configured Remote Repository is public availabe at http://abiquo-repository.abiquo.com/s3direct/ |
This document is designed to help users create their own remote reposity.
Basic components
- Root Folder : Is the initial folder that contains all the images contents
- OVF index : It's an xml file that contains the summary of all the virtual Images that will be shared
- OVF description file : OVF envelope document is the xml file that contains the information of a virtual image
- Disk file : It's the file that contains the virtual image
OVF package contains a metadata file (OVF descriptor file) and all its required referenced files.
All the FileRef on the ''References'' element for the .ovf descriptor should be valid relative paths.
Root folder
Add a root folder. This folder will be shared in your favorite Web/Application server (Tomcat, JBoss, Apache, etc.).
Create the image folders
Organize your virtual appliances inside the ''Root Folder''.
Each folders should contain:
- myApp*.ovf* : The OVF Description Document.
- anyDisk.vmkd : All the referenced file on the metadata document.
OVF Descriptor File
| Creating OVFs Which parts of the OVF are used by Abiquo |
The description.xml file is similar to this
The tags are easy to understand. Althought, this document adds the important tags to be filled:
- References contains the files that are in the package. In our environment, the idea is to add the real disk of the image with the size of the file. The id parameter will be used in the rest of the xml
- The Disk section contains the information of the disk. The capacity has to be filled with the real size of the image (Thinking in disk that expands, in flat files, it's the same of size of last point). The format it's another important parameter. It's important that we add the correct format. The formats supported by abiquo are described on the Image Compatibility Table
This process will be repeated for every virtual Image that user wants to expose in the repository.
Create the ovfindex file
Add a file called ovfindex.xml on root folder.
List all the available OVF packages on the file system (relative to ''root folder''), each .ovf has its OVF Description: brief description (based on its ProductSection) of the OVF description file, also includes:
- OVF File : ''root folder'' relative path to the .ovf document.
- Disk Format type : the virtual disk format VMDK_FLAT, VMDK_SPARSE, RAW, VHD_FLAT, STREAM_OPTIMIZED.
- Disk size : optionally specify the disc capacity in bytes.
- Categories : tag organization. Used to filter the repository list (''Others'' as default).
- ProductSection elements: Info, Product, Vendor, Version, ProductURL. This information can be filed by user to help users to read the desired virtual image information. This info should be syncronized with ovf description.
- Icon: This parameters allows to add an icon into the image information. The url has to be accessible by abiquo if user wants to see the icon. This icon managed will be improved in future versions
Additionally the ovfindex includes:
- RepositoryName: human description ("myRepository").
- RepositoryURI: This contains the url where the repository will be exposed ("http://rs.bcn.abiquo.com").
| OVFFile the OVFindex file should be placed on the ''root folder'' making the ''RepositoryURI + OVFFile'' a valid url to download the OVF file. http://rs.abiquo.com/centos-5-rpath-1-x86/description.ovf |
Generate an ovfindex using the ''indexgeneration'' facility.
Download the latest distribution for this page indexgenerator-0.1-dist.zip .
Call using the follow arguments:
1.- root folder path (/opt/vm_repository)
2.- RepositoryURI (http://rs.bcn.abiquo.com)
3.- RepositoryName (myRepository)
It creates an ''ovfindex.xml'' document on the current directory.
Remote Repository deployment
When all the information is completed, place the ovfindex.xml document on the ''root folder'' and configure the web server to serve files from the ''root folder'' and restart the server
The information is hotdeploy. You can add new images into the repository without having to stop the server.
To test if it is working, you can add the http://repositoryURL/ovfindex.xml in your browser.
Moreover, you can add the repository in the Appliance Library Section and assure that you can see the information
Use Apache HTTPD to Publish a Repository Repository
If you want to host your own Repository Space with your favourite images, the easiest option is an Apache HTTPd Server. A Repository Repository is only a set of static files as follows; the ovfindex.xml is in the root directory, and references the OVF XML descriptors somewhere. This OVF XML descriptor is located inside a folder with the other relevant files:
- The Virtual Disk(s).
- The Icon.
So, we have a hierarchy like this:

Regarding permissions, you only need read permissions on all the files and directories of the Repository.
Use Amazon S3 to Publish a Repository Repository
If you want to host a Public Repository a very interesting alternative is Amazon S3. Amazon S3 is an object storage system that can expose their objects as a classic static HTTP server. So, if you want to host your repository in S3, you only need to create the same structure described for an Apache HTTPd Server in Amazon S3. You can do it directly using their APIs, or with the existing broad range of Consoles and Tools.
Just keep in mind that you have to permit access to 'Everyone' and you have to control the usage of your Repository, since it will contain big files with a lot of bandwidth consumption too.

