cdist configuration management Latest manual: https://www.cdi.st/manual/latest/ Home page: https://www.cdi.st
Find a file
Nico Schottelius 4f64845969 begin to reformat documentation
Signed-off-by: Nico Schottelius <nico@kr.ethz.ch>
2010-09-19 16:45:18 +02:00
bin support pacman packaging system 2010-09-19 14:34:11 +02:00
conf support pacman packaging system 2010-09-19 14:34:11 +02:00
doc add first manpage 2010-09-19 14:45:09 +02:00
test add some tests 2010-09-16 09:50:20 +02:00
cdist.mdwn begin to reformat documentation 2010-09-19 16:45:18 +02:00
README intro => readme 2010-09-19 14:36:20 +02:00

## Introduction

cdist configures your system. It is similar to
[cfengine](http://www.cfengine.org/) and [puppet](http://www.puppetlabs.com/).
It is inspired by both of those tools:

 * Try to redo the great power you get
 * But leave out the bugs you also got

### Principles

cdist is more

   - reuse of unix, no need for perl^Wruby 
   - shell

### Unsupported stuff?

## What do I need [from puppet?]

### Abstraction of package managers

I don't want to care about apt, rpm, yum, pacman, etc. I just
want to ensure, some package exists or does not exist.


### Common tasks already done

   - [LIBRARY] All the helper types like 
      - file
      - ssh_keys
      - package
      - service
      - user

### PORTABILITY
   - [PORTABILITY] clients for every unix
      - mostly ruby + facter in puppet

   - Modules: Nice to put stuff together
      - and reuse
   - [CONDITIONS] facter is cool
   - the DSL
      - with many bugs
   - templates
   - Client/Server approach is nice to have
      - Clients only get the part of the documentation, that's
        relevant to them

--------------------------------------------------------------------------------
what is puppet? [FOR ME]

   A configuration deployment assistant,
   a DSL that allows you define the objectives.
   A webserver with fileserver capabilities.
   A client based scheduled polling infrastructure.
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
What do I miss from puppet?

   - speed
   - elegance
   - clean design
   - documentation
   - the "no surprise" factor
   - easy to use "data memory" (i.e. external ressources)
   - easy integration into installation process
      - copy identity to master
   - multi master setups
   - development configurations / tests
   - editing of configuration files
      - similar to cfengine
   - replace bug squasher with bug avoidance
      - qmail did not need one either
   - push infrastructure
--------------------------------------------------------------------------------
Simple stuff done by Unix[notm]

   - DSL: Shell!
      - gives if, else and EVEN elsif for free!
      - and case
      - and and and
      - and there's no os (solaris doesn't count) without a usable /bin/sh
      - cdist defines what you can use
         - you _can_ use os specific stuff
         - but it's ugly and you shoot into your own foot
      - "manifests" (use the same name here?) will be run/sourced
         - inheritance possible via sourcing
         - cdist-lib always preloaded
      - library == functions?
   - version control via git
   - file distribution via ssh
   - authentication via ssh
   - dumb clients, similar to manifest compile in puppet
      - clients just execute commands
   - dependencies via make?
      - how to ensure sigletons / conflicting definitions?
         file { "/a":
            ensure => present,
         file { "/a":
            ensure => absent,
   - matching on explored items, not only on host name?
      - match function in host? [optional]
   - file source:
      - relative to specification
      - or absolute


--------------------------------------------------------------------------------
Architecture

   

--------------------------------------------------------------------------------
Implementation

   "cdist-server"
      -> called by cron?
      -> no need to reimplement scheduling
   "cdist-explore" (facter replacement)
      -> running on the client