[[!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. There are at least two branches available: * 1.0: stable branch of version 1.0 * next: preparing next cdist version Other branches may be available as well for features or bugfixes, but they may vanish at any point. ### Installation To install cdist, execute the following commands: git clone git://git.schottelius.org/cdist cd cdist export PATH=$PATH:$(pwd -P)/bin ### Update As the stable branch always contains the stable code, you can upgrade cdist using git pull If there are any incompatibilities, at least the minor version (1.0 -> 1.1) will change and thus a git pull will never break your cdist installation (in theory). ## 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).