Abiquo 2.3

Skip to end of metadata
Go to start of metadata

Work In Progress

We are currently working to improve this documentation

What is a Template Repository?

A Template Repository contains different virtual machine template definitions ready to download. These appliances are defined by a simplified OVF file. For practical purposes, a template repository space is an index of virtual machine template definitions. This index can be published on the Internet, for public access, or within the Intranet of your company, for secure, controlled access. A template repository allows virtual machine template creators to share their templates with other Abiquo users in multiple datacenters.

For general information about the structure and content of a template repository, see Template Repository Reference.

What is the template-repository Application?

The template-repository application is a side-project developed to work with Abiquo. It provides a user-friendly interface for creating and managing a template repository. The template repository's contents are described in the ovfindex.xml file, which is created and maintained in a database by the template-repository application.

The template-repository application is implemented with version 1.2.4 of the Play! Framework, a lightweight Java Web framework that provides functionality for MVC applications.

Please see Play Framework deployment documentation for more information about deployment options for Play! Framework applications.

Template-repository, OVF and Abiquo

The template-repository application makes it easier to work with virtual machine templates in Abiquo. It is easy to upload a virtual machine template disk file to the template-repository. The template repository automatically detects the disk format and size. Your virtual machine template is now ready for Abiquo users to download directly from the repository.

The template repository application creates an Abiquo .ovf file as described in this table.

Template-repository panel

Abiquo OVF Section

Abiquo Usage and Notes

Product Description

Product Section

Details displayed in the Abiquo Appliance Library

System Requirements


Used to provision the virtual machine. The Ethernet Driver is written to the .ovf file but Abiquo currently uses E1000 only on all hypervisors except ESX/ESXi

Virtual Disk File

DiskSection and fileRef to disk file

Used to provision the virtual machine. You should not change these values.

For more information see OVF Reference

Feature not yet implemented

(question) To download the .ovf file, click the Download OVF button on the Edit screen.


Installing and Deploying template-repository

To install template-repository you can perform one of these installs:

  • full installation and deployment with the Play framework
  • module installation and deployment with a Tomcat server or other web application server

Installation Guidelines

  • Abiquo recommends that you install the template-repository on CentOS 6
    • Most importantly, customers should install the prerequisites as listed below
    • For convenience, we supply instructions below for the current version of Abiquo Linux, which is based on CentOS 5
      • Installation on CentOS 6 may differ, for example, "yum install git-core" may be the instruction to install git
  • Abiquo recommends Oracle Java
  • You should not install the template-repository on the Abiquo Tomcat server
  • You can install the template-repository on a virtual machine, including one deployed with Abiquo
  • The template-repository will require sufficient hard disk space to hold all the uploaded virtual disk files (but not linked virtual disk files)
  • The Play! Framework should only be used within a secure environment. Do not allow access from the Internet.

Full Installation of template-repository

Install template-repository Prerequisites

A full installation requires the following dependencies:

  • Java runtime environment, required by Play Framework.
  • Play Framework 1.2.4. Download and unzip it because you will need the binaries to run the template-repository application.
  • A MySQL database, used to store the repository data (optional)
  • Git, to download the code from the repository.

The following instructions are for Unix operating systems, but the Play Framework can also be installed on Windows.

Installation of Prerequisites on Abiquo Linux

Abiquo recommends that you install the template repository on CentOS 6. However, for convenience, we provide the following instructions on How to install the Template Repository on Abiquo Linux, which is based on CentOS 5.

  1. Install Abiquo Linux with no Abiquo components selected
  2. Install the latest version of the Java SDK from Oracle
    1. Download Oracle Java SE Development Kit 7 - Linux x64 (64-bit) RPM
    2. Copy the RPM file to the server in the /tmp directory
    3. Install the file using the package manager, for example:

      rpm -ivh jdk-7u4-linux-x64.rpm
    4. Check the java version

      java -version
  3. Install Play! Framework 1.2.4
    1. Download, for example, while logged in to the server

      wget http://download.playframework.org/releases/play-1.2.4.zip
      cp play-1.2.4.zip /opt/
      cd /opt/
    2. Install unzip and unzip Play! Framework

      yum install unzip
      unzip play-1.2.4.zip
    3. Export Play! Framework path

      export PATH=$PATH:/opt/play-1.2.4
    4. Test play is installed correctly

      play --help
  4. Configure yum repos for CentOS 5
    1. Create a repo file. Edit /etc/yum.repos.d/epel.repo and copy and paste the following

      name=Extra Packages for Enterprise Linux 5 - $basearch

      name=Extra Packages for Enterprise Linux 5 - $basearch - Debug

      name=Extra Packages for Enterprise Linux 5 - $basearch - Source

    2. Add the key for the repo

      cd /etc/pki/rpm-gpg/
      wget https://fedoraproject.org/static/217521F6.txt
      cp 217521F6.txt RPM-GPG-KEY-EPEL
      rm 217521F6.txt
  5. Install git using yum

    yum install git

Download the Code from Github

After you install the dependencies, open a shell and go to the directory where you unzipped play framework. More information on the template-repository application can be found on GIT https://github.com/abiquo/template-repository  Download the code for the template-repository using the following command:

git clone git://github.com/abiquo/template-repository.git

Starting the Webapp on the Play Framework

Either go to the directory where you installed the Play Framework and run the template-repository or execute from the template-repository directory with the following commands.  

[root@TAPortal template_repository]# play dependencies template-repository
[root@TAPortal template_repository]# play start template-repository

~        _            _
~  _ __ | | __ _ _  _| |
~ | '_ \| |/ _' | || |_|
~ |  __/|_|\____|\__ (_)
~ |_|            |__/
~ play! 1.2.4, http://www.playframework.org
~ OK, /opt/template_repository/template-repository is started
~ output is redirected to /opt/template_repository/template-repository/logs/system.out
~ pid is 12728

[root@TAPortal template_repository]#

This will run the application in the background and generate a .pid file (above example pid 12728).

Managing the .pid File

You must manage the .pid file carefully because if the machine shuts down ungracefully, the .pid file will still exist when it restarts. This will mean that the application will not be able to start up again, even if it is currently stopped, because a .pid file exists. To delete the .pid file, run the following command:

[root@TAPortal template_repository]# play stop template-repository

Then the application will be able to start again.

Module Deployment with a Web Application Server

You can deploy the template repository with a web application server. Abiquo recommends Apache Tomcat.

For example, to use a Tomcat server to deploy the template-repository:

  • Install and configure Tomcat if necessary (do not use the Abiquo Tomcat server)
  • Download the .war file
  • Put the .war file in the appropriate directory (e.g. webapps)
  • It is not necessary to restart the Tomcat server

Create the Main Folder

Create the repository main folder. To create the default main folder (/opt/template_repository) use the following command.

mkdir /opt/template_repository

You can configure the main folder in the application.conf file. See #Configuring the main folder

Configuring template-repository

By default the configuration is stored in the template-repository/conf/application.conf file. This file contains more information about the configuration options.
See also the Play! Framework configuration documentation.

Configuring the main folder

The directory where the disk files are stored and be configured by the following setting ovfcatalog.repositoryPath by default /opt/template_repository is the deafult setting.


Use a MySQL instead directory on the filesystem

By default uses embedded filesystem database (db=fs) you can use MySQL by changing the application.conf file in the directory /template-repository/conf to db=mysql:root:root@templaterepository also use ''jpa.ddl=create'' for the first run use use of the database.


Use a different port

Default port is 9000 edit the application.conf file in the directory /template-repository/conf if you require a different port. For example to set the port the 80 the setting would look like the following.


Use Open-ID Authentication

By default the template repository application uses Open-ID authentication, edit the application.conf file in the directory /template-repository/conf to change or remove Open-ID authentication. Find the line containing the text "organization.domain". Change the domain information to the value of the organization.domain as required or ADD "#" character to comment this line out for NO authentication. Default example is for abiquo.com, set '#' to comment out the line would look like this.

# organization.domain=abiquo.com

Configure the Firewall for Access to the Application

Allow access to the port configured to access the application in your firewall. By default this is port 9000 but you can configure a different port.

Example firewall configuration using iptables

Unsupported Example for Guidance Only

This information is provided for guidance only. Firewall configuration should be performed by a security expert.

Run this command as root to list the firewall rules

# iptables -L

Modify the rules to allow tcp access to port 9000 (or replace 9000 with your chosen port) and save the configuration

iptables -A INPUT -p tcp --dport 9000 -j ACCEPT
iptables-save > /etc/sysconfig/iptables
service iptables restart

Check the access using the command

netstat -putan

Look for the port that you have configured for template-repository and check that it will accept connections

Testing the template-repository Installation

Browser Testing

To test the repository in your browser, go to the address


Abiquo Testing

To test the repository in Abiquo, add the repository to the Appliance Library and check that you can see the appliances. Add the address of the new remote repository URL such as http://my.repository.URL:myPORT/ovfindex.xml . By default the 'name' of the repository will be called 'playrepo' in the Remote Template Repositories list in Abiquo. This can be changed by editing the ovfindex.xml file in the path /opt/template_repository/template-repository/app/views/OVFPackages/ovfindex.xml specifically the RepositoryName="playrepo" setting.


Production Configuration

After testing your template-repository deployment, change the following configuration options before going into production. By default the configuration is stored in the template-repository/conf/application.conf file.

Set template-repository to production mode

Change the appplication.mode parameter from dev (development) to prod (production).

# General webapp properties


Use a new secret key

To improve security, use a new secret key. Generate one using the play framework (./play secret template-repository) or use another means to generate a new random string of the same length as the one in application.conf.

# Secret key
# ~~~~~
# The secret key is used to secure cryptographic functions
# If you deploy your application to several instances be sure to use the same key !

Other security considerations

Using template-repository


If the template-repository has been configured to use OpenID, log in using your google login.

Home Screen

The main screen of the template-repository contains a menu for access to template-repository functions and lists the available templates. Click to enlarge the image below.

Top Menu

The top menu provides the following functions.

On the left side of the screen:

  • Title- a link to the /ovfindex.xml, the file containing an index of all the OVF packages added
    • List - returns to the list of packages
    • New - add a new virtual machine template definition to the template repository
    • Search - search for a template definition using the text entered in the search box

If using OpenID, on the right side of the screen:

  • Logout - log out of the template repository

Package list

The Package list is a list of all templates with the following information:

  • Package name - a link to the package edit screen
  • Disk file format - one of the Abiquo formats
  • Category - classification, e.g. OS.
  • Icon URL - link to icon image file on the Internet in jpeg, png or gif format

Ordering the Package List

Click any of the headings of the columns of the package list to order by that column. Click again to change between ascending and descending order.

Adding a New Template

Click New in the main menu to add a new package.

The following dialog will appear:

Select the disk file to upload or enter the URL for the disk file.

The following screen with the Product Description and System Requirements panels will appear. Enter the details in the Product Description and System Requirements panels for the fields as described in the tables below.

Product Description




Format of the virtual template you are uploading. Required field


Name of the OVF package. It is not necessary for it to match the file name. Required field


Short description of the package. Usually also includes information such as the login credentials of the template


Shows which category the template belongs to. Typical values are OS, Firewall, Abiquo, etc

Icon URL

Points to a URL containing an template, which will be used as an icon for the package

System Requirements




Number of CPUs the template requires. Required and numeric


Amount of memory the template requires. Required and numeric

MB or GB

Unit of RAM memory

Ethernet Driver

Required. Default: E1000. This option will be recorded in the .ovf file. However, Abiquo currently uses E1000 for all hypervisors except ESX/ESXi. For ESX/ESXi, select from E1000, PCNet32, VMXNET3

After completing these forms, click "Create Template".

Template-repository will use diskid to determine the virtual disk file size.
DiskId is accessed at a IP public address http://diskid.frameos.org/?format=json
If the template repository cannot access this service, follow the instructions in the git rubiojr/diskid repository to start the webservice (based on qemu_img).

A new Virtual Disk File panel will appear at the bottom of the screen for you to confirm the virtual disk file details.

Virtual Disk File




Path of the file associated with this package. It is best not to change this field, but if you do need to change it, please do so extremely carefully, because an incorrect value could result in an invalid package. This can be a URL or a filename on the local filesystem

Download button

Click to download the virtual disk file to your machine


Size of the file associated to this package. It is best not to change this field. If you do need to change it, please do so extremely carefully because this field is used when downloading the template and you could be changing its bounds (start and end point of the disk file).


One of the Abiquo virtual disk formats. See Template Compatibility Table

Confirm the virtual disk file details.

Save or Delete a Template




Create a template

Save and continue editing

Save the template and continue editing

Delete template

Remove the current template and DELETE the uploaded file

Editing a Template

To edit a template, click the template name in the template list.
The edit screen will appear with three edit panels.
These edit panels are the same as those for adding a template: Product Description, System Requirements, Virtual Disk File. The buttons also work in the same way.

The fields and buttons are the same as the ones described above

Downloading a Virtual Disk File

From the Edit screen, go to the Virtual Disk File panel and click the blue Download button beside the Path field to download the virtual disk file to your system.

Downloading a .ovf File

(question) On the Edit screen, go to the Virtual Disk File panel and click the Download OVF button near the Path field to download the virtual disk file to your system.

Searching for a Template

Enter text in the search box to find templates with that text in the template details fields.
For example, the image below shows a search for "win". The result includes several Windows templates and a template without Windows in the name but included in the category Windows.

  • No labels