-
Notifications
You must be signed in to change notification settings - Fork 0
Oz_template_description_language
This page describes Template Description Language (TDL) and the structure of a TDL document. This page also provides examples of TDL files for use with Aeolus Conductor.
TDL is an XML-based language for creating image templates. TDL files define aspects of a virtual machine image including operating system, installation settings, packages, and files. An Aeolus user imports TDL files into Conductor. Aeolus (specially Imagefactory and Oz) interprets these TDL files and builds them into images, which can be pushed into cloud providers.
The following is an example of a basic Fedora 15 image using 64-bit architecture:
<template version="1.0">
<name>Fedora_15-x86_64</name>
<os>
<name>Fedora</name>
<version>15</version>
<arch>x86_64</arch>
<install type='...'>
...
</install>
<rootpw>p@55w0rd!</rootpw>
</os>
<template>
The elements specified in this template are required for all TDL files.
The template
element acts as a base container for your template. It
requires a version
attribute to define the TDL language version.
The name
element is a user-defined indentifier for your template.
The os
element acts as a container for your operating system
information. It requires several sub-elements: name
, version
,
arch
, install
and rootpw
.
The name
and version
elements define the operating system for the
image. The name
refers to the name of the operating system while the
version
refers to the operating system’s version. In our example, the
operating system is Fedora 15:
<template version="1.0">
...
<os>
<name>Fedora</name>
<version>15</version>
...
</os>
<template>
The arch
element specifies the architecture of the virtual CPU. Values
include either i386
(32-bit) or x86_64
(64-bit).
The install
element is a reference to the installation media. This
element contains a type
attribute, which defines one of two options
for installation media: url
or iso
.
* If the type
attribute is set to url
, Aeolus uses a repository
url
that contains the operating system:\
<install type='url'>
<url>http://www.example.com/fedora/releases/15/x86_64/os/</url>
</install>
</pre>
* If the @type@ attribute is set to @iso@, Aeolus uses an @iso@ location that contains the operating system:
<pre>
<install type='iso'>
<iso>http://www.example.com/isos/fedora_15-x86_64.iso</iso>
</install>
The rootpw
element defines the root
user’s password for your system.
The following outlines optional elements in a TDL file:
<template version="1.0">
<name>Fedora_15-x86_64</name>
<description>Fedora 15 64-bit Image</description>
<template>
The description
element specifies a user-defined description of the
image.
<template version="1.0">
...
<repositories>
<repository name='signed-custom-repo'>
<url>http://custom-package-site.redhat.com/repos/unsigned_custom_repo/</url>
<signed>True</signed>
</repository>
<repository name='unsigned-custom-repo'>
<url>http://custom-rpackage-site2.redhat.com/repos/signed_custom_repo/</url>
<signed>False</signed>
<persisted>False</persisted>
</repository>
</repositories>
...
<template>
The repositories
element contains a set of repository
elements. Each
repository
element lists an additional repository for package
installation.
A repository
element requires a name
attribute and a url
element
pointing to the repository location.
The signed
element indicates the GPG signature-checking status for the
repository as Boolean value. If true
, Aeolus enables GPG signature
checking. If false
or not included, Aeolus disables GPG signature
checking.
The persisted
element indicates whether Aeolus keeps the repository
definition on the image. If true
or not included, Aeolus includes the
repository definition. If false
, the repository is only available
during customization and does not appear on the completed image.
<template version="1.0">
...
<packages>
<package name='samba'/>
<package name='samba-client'/>
<package name='samba-custom-package'>
<repository>signed-custom-repo</repository>
</package>
</packages>
...
<template>
The packages
element contains a set of package
elements. Each
package
element defines an additional package to install using the
name
attribute.
Use the repository
sub-element to define a specific repository that
contains the package. Ensure to define this repository in the
repositories
section.
<template version="1.0">
...
<files>
<file name='/etc/hosts'>
127.0.0.1 localhost
::1 localhost
15.125.64.1 www.example1.com
15.125.64.2 www.example2.com
</file>
<file name='/tmp/binary_file' type='base64'>
VGhpcyBpcyBhbiBlbmNvZGVkIGZpbGUK
</file>
</files>
...
</template>
The files
element contains a set of file
elements. Each file
element defines an file to create on the image.
Each file
element contains a name
, which indicates the location and
filename on the image, and a type
, which equals either raw
(raw
text) or base64
(Base64-encoded).
A TDL file defines the file as data within the file element. In the
example above, the /etc/hosts
file contains a list of customised IP
hostnames.
<template version="1.0">
...
<commands>
<command name="test">
echo "15.125.64.3 www.example3.com" >> /etc/hosts
</command>
</commands>
...
</template>
The commands
element contains a set of command
elements. Each
command
element runs a command post-installation of an image. The
name
attribute acts as an identifier for the command.
In the example above, the command appends the /etc/host
with an
additional IP hostname.
Read the full specification for TDL here .
Element Description Attributes Parents Children Required
arch CPU architecture of the image. Either i386
or x86_64
. os Yes
cacert The certificate authority for SSL repository Yes, if sslverify
is true
clientcert The client certificate for SSL repository Yes, if sslverify
is true
clientkey The client key for SSL repository Yes, if sslverify
is true
command A command run on an image post-installation. name=“command-name” commands
commands Container for command
elements. template command
description A user-defined description for the image. template
file Defines a file to save to the image in a specific location. name=“/location/filename” files
files Container for file
elements. template file
install The installation media. Requires a type
. type=“url|iso” os url, iso Yes
iso Location of installation media ISO file. install Yes, either url
or iso
key The serial key for Windows installation os Yes, if a Windows-based machine
md5sum The MD5 checksum to verify an ISO install
name (os) Defines the operating system name. Examples of choices include Fedora, RHEL6, RHEL5, Windows. os Yes
name (template) The image template’s name. template Yes
os Container for operating system information template name (os), version, arch, install, rootpw, key Yes
package Defines a package to install to the image. name=“package-name” packages repository (package)
packages Container for package
elements. template package
persisted A Boolean value indicating whether to store the repository information on the image. The default is true
. repository
repositories Container for repository
elements. template repository (repositories)
repository (package) Defines a target repository that contains a specific package. package
repository (repositories) Defines a repository that contains additional packages for installation. name=“repo-name” repositories url, signed, persisted, sslverify, cacert, clientcert, clientkey
rootpw The root password for the image. os Yes
sha1sum The SHA1 checksum to verify an ISO install
sha256sum The SHA256 checksum to verify an ISO install
signed A Boolean value to indicate whether to perform GPG signature checks. The default is false
. repository
sslverify A Boolean value to indicate whether to use SSL for accessing the repository. The default is false
. repository
template Base container for all TDL elements. version=“1.0” name, description, os, repositories, packages, files, commands Yes
url Location of installation media. install Yes, either url
or iso
version The operating system version. os Yes
The following sections list a few examples of TDL files. Find more examples here .
<template>
<name>Fedora_15</name>
<description>Fedora 15</description>
<os>
<name>Fedora</name>
<version>15</version>
<arch>x86_64</arch>
<install type='url'>
<url>http://download.fedoraproject.org/pub/fedora/linux/releases/15/Fedora/x86_64/os/</url>
</install>
</os>
</template>
This is a basic TDL file that creates a Fedora 15 64-bit image using the main Fedora RPMs.
<template>
<name>Fedora_15-Audrey</name>
<description>Fedora 15 with Audrey Agent</description>
<os>
<name>Fedora</name>
<version>15</version>
<arch>x86_64</arch>
<install type='url'>
<url>http://download.fedoraproject.org/pub/fedora/linux/releases/15/Fedora/x86_64/os/</url>
</install>
</os>
<repositories>
<repository name='aeolusrepo'>
<url>http://repos.fedorapeople.org/repos/aeolus/conductor/latest-release/fedora-15/x86_64/</url>
<signed>False</signed>
</repository>
</repositories>
<packages>
<package name='aeolus-audrey-agent'/>
</packages>
</template>
This is a TDL file that creates an Audrey-enabled Fedora 15 64-bit
image. Note the additional repository (aeolusrepo
) and package
(aeolus-audrey-agent
) will install Audrey Agent to your image.
<template>
<name>opensuse.11.3</name>
<description>OpenSUSE 11.3</description>
<os>
<name>OpenSUSE</name>
<version>11.3</version>
<arch>x86_64</arch>
<install type='iso'>
<iso>http://download.opensuse.org/distribution/11.3/iso/openSUSE-11.3-DVD-x86_64.iso</iso>
</install>
</os>
</template>
This is a TDL file for an OpenSUSE 11.3 image with installation from an ISO.