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.
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 standard xpath expressions 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 are 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)
|
|
|
|
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 will be downloadable here... when they become available. 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 autoinst build
[output snipped]
$ /usr/bin/python2 ./setup.py autoinst install
build and install aiupdate:
$ cd autoinst
$ /usr/bin/python2 ./setup.py aiupdate build
[output snipped]
$ /usr/bin/python2 ./setup.py aiupdate install
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.