tetre2overview - Template Tree 2 Overview


Template Tree 2 is a software system for efficiently managing the configuration of large and heterogeneous Unix installations.


The Problem

Setting up a Unix machine in an enterprise environment requires not only the installation of the OS distribution, but also a great deal of customization to integrate the machine into the local environment.

This integration process requires the replacement of some parts of the operating system with customized configuration files or even the integration of whole new features. Files like /etc/services, /etc/inetd.conf, /etc/mail/ come to mind but also third party software like AFS (Andrew File System), SSH (Secure Shell) or Postfix.

These changes have to be performed during the initial installation of the machine but may also be necessary after changes to the local environment and if updates or security fixes have to be integrated.

At the simplest level this customization is done by hand on an individual, per machine basis. This has unacceptable disadvantages in an enterprise setup:

In other words automation of the post install process is imperative for large installations.

An simple approach taken by many is to write a special customization script which is run on a machine after its installation. While this script can do everything necessary and is also fast it does not solve the scalability issue on another level:

The Solution

Template Tree 2 resolves these issues. It uses a centrally configurable, modularized approach to the problem.

  1. The different aspects of a computers post install customization are grouped into features. One feature could be SSH support another one the local printer setup. Each feature consists of a set of files and a META file describing how the feature is to be applied to a machine.

  2. A single central configuration file pulls all the features together and defines which feature should be used on which host. The syntax of this configuration file has been designed to allow highly flexible configuration without sacrificing legibility.


As explained above there are several components to a tetre2 system. The following sections describe these components in detail.

System Configuration File

The System Configuration defines where tetre2 should look for other components of the system, it defines which operating systems your tetre2 installation supports and which attributes must be known for each host managed by the system. The System configuration should be more or less static and is therefor kept in its own file. The System configuration is stored in ${TeTreCfg}/system.conf. Read tetre2system.conf.

Feature Repository

A feature is a group of files necessary to implement a certain feature on a target host. Be it AFS integration, configuration of an FTP server or tightening the default security provided by the vendor.

Each feature lives in its own subdirectory where all the files required to implement it are stored. One special file must be present in each feature directory. It is called META. The META file documents what the feature does and which customizations are possible. It also contains a section defining the actions required to apply the feature to a target machine. The location of the Feature repository is defined in the system.conf file. Read tetre2META.

Site Description File

The Site Description contains structured information about which features should be installed on which host and how they should be configured. By default this information can be found in the file: ${TeTreCfg}/site.desc. Read tetre2site.desc.

Host List File

Apart from the information contained in the site description which is very feature specific, there is a set of basic attributes which must be known for each host. The host database is a text file where each line starts with a hostname followed by a number of positional attributes for this host. The positional attributes are defined in the system.conf file. The host.list is stored in the file: ${TeTreCfg}/host.list. Read tetre2host.list and the ISG::HostList manpage.

General Notes on Configuration files

Each one of the template tree configuration files have a syntax which has been crafted to make the file as legible and simple as possible. For details see the documentation on the documentation on the individual configuration file. Never the less, the configuration files share some properties. These are explained below.

Operational Details

The teTre2 program is basically a preprocessor. It converts the configuration information contained in the tetre configuration files and in the feature tree into a number of target formats.

At the moment there are two target formats available. First there is cfengine which generates a cfengine configuration file. You can then run this file with cfengine to update the local machine. Second there is a pod mode which produces comprehensive documentation of all features available in the local feature repository.

For details about the teTre2 program read tetre2.


The latest copy of tetre2 can always be found on

Lisa Paper

At LISA 2001 I presented a paper on TeTre2. You can find a copy of the paper on


tetre2META, tetre2site.desc, tetre2, tetre2host.list, tetre2system.conf


Tobias Oetiker <>