Login | Register
My pages Projects Community openCollabNet

autoinst
Project home

If you were registered and logged in, you could join this project.

Summary A version control system for UNIX host configuration
Category deployment
License BSD License
Owner(s) dmercer, mlum

Autoinst provides a set of tools that can be used to keep your server and application configuration files up to date and synchronized based on a version controlled description of the environment. Using autoinst, you can generate and distribute any past configuration, as well as audit when and why a specific change took place. While it can be used as a simple configuration file deployment system, autoinst allows you to create detailed system profiles that can be subsequently applied to servers in an automated manner through provisioning tools like kickstart, jumpstart and cfengine. Autoinst is Free Software.

simple architecture diagram
autoinst architecture

Some systems that have been automated using autoinst include:

Features

  • Version Controlled Host and Application Configuration.

    Autoinst stores all of its resources in a subversion repository, allowing every change to be tracked. The autoinst command line tools make it easy to operate against any previous revision of the repository, allowing your packages and tools to reproduce their configuration from a previous point in time.

  • Ubiquitous, easily accessible source of configuration data.

    Autoinst resources are accessible via HTTP/HTTPS and can be queried using a REST API or simple bourne or perl scripts. A host only needs to know the base URL of the repository and its fully qualified hostname to locate the current revision of its configuration. Autoinst repositories are easily mirrored for access across multiple datacenters, or can be accessed via squid proxies.

  • Secure communication between repository and managed hosts.

    Autoinst supports access and file distribution using SSL and requiring HTTP 401 authentication. Any authentication module supported by Apache can be used to restrict access to your repository.

  • Extensible syntax.

    The XML format used by autoinst to describe host configurations can be easily extended for your own purposes. The ability to tag hosts with virtual labels makes creating groups of servers that share a common role or attribute simple. RelaxNG schemas provide a mechanism by which documents are validated prior to commit.

  • Reproducible configuration file generation.

    Autoinst actions use specialized XSL templates that can be applied to your configuration repository to generate any kind of application or os specific configuration file. Actions are stored in the repository as well, guaranteeing that any previous combination of action and data can be reproduced on demand. Autoinst actions have been written to generate a wide variety of UNIX configuration files, and a standard template library exists to minimize the effort required to create new ones.

  • File distribution mechanism.

    The aiupdate utility allows configuration files generated using autoinst actions to be distributed using HTTP/HTTPS. The aiupdate client has few pre-requisites, and is intended to run on hosts that have no other awareness of autoinst, allowing software and services running on them to be kept up to date in a transparent manner. The aiupdate utility will manage posix ownersips and permissions, and can optionally execute pre and post actions for services that require interaction to make use of an updated configuration.

Obtaining Autoinst

The autoinst software should be able to be run on any posix-like platform that supports the prerequisites described in this section. Development and testing of autoinst takes place on rpm-based Linux distributions. Autoinst can be installed either as the complete suite of tools that operate against the subversion based version control repository, or as the standalone aiupdate utility that can be used to keep hosts up to date from a remote repository.

Prerequisites

Autoinst depends on a number of other free software packages. These packages are listed below, and must be installed before Autoinst will work. Many operating system vendors provide these tools bundled in the standard release.

autoinst (complete) aiupdate client (standalone)
Package Name Version URL
python 2.x http://www.python.org
apache 2.0.48+ http://httpd.apache.org
libxml2 + python bindings 2.5.20+ http://xmlsoft.org
libxslt + python bindings 1.0.33+ http://xmlsoft.org
lxml 2.1+ http://codespeak.net/lxml/
subversion + python bindings 1.3+ http://subversion.tigris.org
Package Name Version URL
python 2.x http://www.python.org

Note for RHEL / RPM Users: The RPM distribution for libxml2 and libxslt are broken down into several separate packages. Be sure that you have both the libxml2-python and libxslt-python rpms installed in addition to the base package.

Obtaining the software

The sources to autoinst can be retreived using subversion. For instructions on how to configure your client, click here. You can also browse the source tree with your web browser.

Packaged distributions are downloadable here. If you package autoinst for a specific platform, consider becoming a package maintainer!

Installation

Once you are certain that all prerequisites are available, you can install autoinst using the python distutils 'setup.py' script. If you have multiple python runtimes installed on the host, be sure to call setup with the fully qualified path to the version you wish to use.

build and install everything:
$ cd autoinst
$ /usr/bin/python2 ./setup.py build
[output snipped]
$ /usr/bin/python2 ./setup.py install
build and install aiupdate:
$ cd autoinst
$ cp client/aiupdate /usr/sbin

RHEL users can use the 'bdist_rpm' target to create an rpm package for subsequent installs.

Setup

See the User Guide for detailed instructions for setting up a new installation of autoinst.

Extending Autoinst

Autoinst is designed to be easily extensible. You can use it to generate and deploy customized configuration files and scripts for your local applications, or you can use a lightweight HTTP(S) protocol to query the repository from shell, perl, or python scripts. The built-in configuration file generation is based on XSL. The autoinst libraries are written in python.

Community

This project is being organized to provide a version of autoinst that can be easily deployed into your environment along with a set of community supported modules. If you have an interest in participating in this effort, please feel free to join the community using the links above.