cdist/cdist.mdwn

100 lines
3 KiB
Text
Raw Normal View History

cdist (=opposite to ccollect)
aka puppet don right
- reuse of unix, no need for perl^Wruby
- shell
--------------------------------------------------------------------------------
what is puppet?
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 need from puppet?
- handling of package managers
- Modules: Nice to put stuff together
- and reuse
- [LIBRARY] All the helper types like
- file
- ssh_keys
- package
- service
- user
- [CONDITIONS] facter is cool
- [PORTABILITY] clients for every unix
- mostly ruby + facter in puppet
- 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 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