cdist configuration management Latest manual: https://www.cdi.st/manual/latest/ Home page: https://www.cdi.st
Find a file
Nico Schottelius 0f6bfb304e master == dev
Signed-off-by: Nico Schottelius <nico@kr.ethz.ch>
2011-03-04 15:02:56 +01:00
bin finish cdist-quickstart 2011-03-04 11:02:28 +01:00
conf finish cdist-quickstart 2011-03-04 02:06:13 +01:00
doc finish cdist-quickstart 2011-03-04 11:02:28 +01:00
.gitignore
HACKERS_README update hackers readme 2011-03-04 11:09:52 +01:00
Makefile
README master == dev 2011-03-04 15:02:56 +01:00
REAL_README master == dev 2011-03-04 15:02:56 +01:00
TODO-1.0 cleanup todo for documentation 2011-03-03 10:54:38 +01:00

[[!meta title="cdist - configuration management"]]

[[!toc  levels=2]]

## Introduction

cdist configures your system and is similar to
other configuration management systems like
[cfengine](http://www.cfengine.org/),
[bcfg2](http://trac.mcs.anl.gov/projects/bcfg2),
[chef](http://wiki.opscode.com/display/chef/)
and [puppet](http://www.puppetlabs.com/), but
it ticks differently:

 * cdist sticks completly to the KISS (keep it simple and stupid) paradigma
  * cdist's core is very small (< 1k lines of code)
  * There is only one type to extend cdist called ***type***.
  * One main development target: ***It must be incredible easy to add new types.***
 * cdist is UNIX
  * It reuses existing tools like cat, find, mv, ...
  * cdist's documentation is bundled as manpages
 * cdist is written in POSIX shell
  * No special requirements like high level interpreters needed on server or target


### Architecture

 * Push mode (server pushes configuration)
 * Pull mode planned (client triggers configuration)
 * User defines configuration in shell scripts (called ***manifests***)
 * Cdist generates internal configuration (cconfig style) and afterwards applies configuration

### Features

Stuff that should probably be included in every configuration management,
but is not. Or: The reason why I began to write cdist.

 * Speed
 * Elegant code
 * Clean design
 * Good documentation (man pages)
 * Meaningful error messages
 * No surprise factor
 * Consistency in behaviour, naming and documentation
 * Easy integration nacked installations
 * Simple and well-known DSL: posix shell
 * It is very easy to
  * extend cdist
  * debug cdist-core and cdist-types
 * Focus on reuse of existing functionality
  * ssh
  * sh
  * find, rm, ...

## Requirements

### Server

 * A posix like shell
 * SSH-Client

### Client ("target host")

 * A posix like shell
 * SSH-Server


## Getting cdist

You can clone cdist from git, which gives you the advantage of having
a version control in place for development of your own stuff as well.

### Installation

To install cdist, execute the following commands:

    git clone git://git.schottelius.org/cdist
    cd cdist
    export PATH=$PATH:$(pwd -P)/bin


Afterwards you can run ***cdist-quickstart*** to get an impression on
how to use cdist.

### Available versions

There are at least two branches available:

 * master: the development branch
 * 1.0: stable branch of version 1.0

Other branches may be available as well for features or bugfixes, but they
may vanish at any point. To select a specific branch use

    # Generic code
    git checkout -b <name> origin/<name>
    
    # Stay on version 1.0
    git checkout -b 1.0 origin/1.0

### Update

To upgrade cdist in the current branch use

    git pull

The version branches are designed to change if there are incompatibilities.
Or the other way round: As long as you stay on 1.0 and do git pull, nothing
should break.

## Support

### IRC

You can join the development ***IRC channel***
[#cLinux on irc.freenode.org](irc://irc.freenode.org/#cLinux).

### Mailing list

Bug reports, questions, patches, etc. should be send to the
[cdist mailing list](http://l.schottelius.org/mailman/listinfo/cdist).