OS template cache preparation

From OpenVZ Virtuozzo Containers Wiki
Revision as of 12:10, 16 October 2008 by Okobloko (talk | contribs) (Alternative: use precreated template cache)
Jump to: navigation, search

This article describes the procedure of an OS template cache creation. It assumes you already have OpenVZ installed and running. The steps needed to achieve it are documented in the Quick installation document.

Terminology

Please make sure you understand the following terms.

<translate> An OS template is basically a set of packages from some Linux distribution used to populate a container. With OpenVZ, different distributions can co-exist on the same hardware box, so multiple OS templates can be available.

An OS template consists of system programs, libraries, and scripts needed to boot up and run the system (container), as well as some very basic applications and utilities. Applications like a compiler and an SQL server are usually not included into an OS template.

<translate>

Warning.svg Warning: The rest of this document is obsoleted and is kept here for historical purposes only. Template utilities (vzpkg/vzyum) are no longer supported. Use precreated templates.

OS template metadata is a set of a few files containing the following information:

  • List of packages that form this OS template
  • Locations of package repositories
  • Scripts needed to be executed on various stages of template installation
  • Public GPG key(s) needed to check signatures of packages
  • Additional OpenVZ-specific packages

Using OS template metadata and vzpkg tools, an OS template cache can be created.


<translate> An OS template cache is an OS template installed into a container and then packed into a gzipped tarball. Using such a cache, a new container can be created in a matter of minutes, if not seconds.

OS template cache can either be created from OS template metadata using vzpkg tools, or by other means.


Creating an OS template cache

You can create an OS template cache using template utilities and OS template metadata right on your hardware node. The process is automated and will take from about 10 minutes to a few hours, depending on the network speed, and the result will be most up-to-date template cache.

Installing template utilities

You have to install a few packages in order to be able to create/update OS template cache(s).

Using yum

# yum install vzpkg vzyum vzrpm43-python vzrpm44-python vzctl-lib

Using rpm

Packages are available from Download » Templates » Utilities. You need both vzpkg and vzyum packages, as well as one or both vzrpm43/vzrpm44 (including their -python counterparts), depending on the OS templates being used.

Install these utilities using rpm:

# rpm -ihv vzpkg*.rpm vzyum*.rpm vzrpm44*.rpm

In Red Hat Enterprise Linux, to install vzyum you will need python-elementtree, python-sqlite, and python-urlgrabber. These packages might have dependencies of their own. For example, python-sqlite needs sqlite.

Installing OS template metadata

To create an OS template cache, you need to get the metadata for the chosen OS template(s).

Using yum

To see which templates are available, run

# yum search vztmpl

To install some of the templates, run

# yum install vztmpl-XXX [...]

Using rpm

Get the chosen vztmpl-* packages from Downloads » Templates » Metadata (or directly from download.openvz.org/template/metadata or one of the mirrors and install them:

# rpm -ihv vztmpl-*.rpm


Running vzpkgcache

Run the vzpkgcache utility; see the vzpkgcache(8) man page for details. It will create or update the caches of all the templates for which the corresponding metadata exist.

# vzpkgcache centos-4-i386-minimal

Alternative: use precreated template cache

As an alternative to creating a cache using template metadata, you can use precreated template cache taken from Downloads » Templates » Precreated, or directly from download.openvz.org/template/precreated, or from one of the mirrors.

Precreated templates can be easily updated using the following algorithm:

  1. create temporary container based on template
  2. update container using OS-specific tools (yum, apt or similar)
  3. pack container as a new template

Examples of this procedure are described in details at Updating Ubuntu template, Updating Debian template, Fedora template update

In order to use precreated template cache files, download files for chosen OS distributions and place them as-is (no unpacking needed) to the /vz/template/cache directory.

NOTE: If you use precreated CentOS-4 templates and wish to install software using vzyum, you will probably run into error like this:

[root@localhost tmp]# vzyum CTID install mypackage
[root@localhost tmp]# ERROR: No such OS template: install

This might apply to Fedora also. To fix this problem, install the appropriate OS template metadata on the OpenVZ host, for example

yum install vztmpl-centos-4

[Unverified note] : After creating a new OSTemplate cache called "centos4-i386-[ASINGLEWORD].tar.gz from a Container (on which vzyum worked) based on centos4-i386-default.tar.gz, vzyum failed to work (showing "No such OS template: install").

Here is the "solution" I worked out : The new OSTemplate should be named "centos4-i386-[ASINGLEWORD].tar.gz", and in /vz/template/centos/4/i386/config you should copy the default.list to [ASINGLEWORD].list. vzyum then works (for me!). I have tried to verify this by creating templates with [MULTIPLEWORDS], which fail, and by creating templates without a corresponding [ASINGLEWORLD].conf file, which also fail - indicating that using a single word seems to be important (no hyphens etc). Good luck.

Next step

Follow on to the container creation article.